NinjaTrader 8 Monte Carlo Simulation: Stress-Test Your Strategy Before a Prop Firm Does

Your backtest shows one equity curve. That curve is a single ordering of your trades, the exact order the market happened to hand them to you over the test period. Shuffle those same trades and the curve changes shape. The ending profit might hold up, or it might not. The worst drawdown almost always moves. If you trade a prop firm account with a hard drawdown limit, that second number decides whether you keep the account.

NinjaTrader 8 has a built-in tool for exactly this question, and most traders never open it. It is called Monte Carlo Simulation, it lives inside the Strategy Analyzer, and it takes about a minute to run once you have a backtest. This guide covers what it does according to NinjaTrader's own documentation, how to run it, how to read the graph, and the limits you need to understand before you trust it with a funded account.

What Monte Carlo Simulation Actually Does

NinjaTrader's help guide describes Monte Carlo Simulation as a technique that uses repeated random sampling, specifically "sampling with replacement," to compute a range of possible results and their probabilities. In plain terms, NinjaTrader takes the list of trades from your backtest and builds new, imaginary trade sequences by drawing from that list at random, over and over. Each imaginary sequence is one simulation. Run enough of them and you get a distribution of outcomes instead of a single result.

The "with replacement" part matters more than it sounds. Each draw puts the trade back in the pool, so one simulation might pick your best trade three times and another might never pick it at all. That means the simulations do not just reorder your trades. They also change the mix. Some runs end with more profit than your backtest, some with less, and a few land much worse than anything you saw in the original test.

The help guide is direct about why this is worth doing:

A profitable backtest "may have just been due to good luck." (NinjaTrader 8 Help Guide, Running a Monte Carlo Simulation)

The same page points out that in real trading you could hit a string of bad trades that wipes out the account before the good trades show up, and that it helps to know how likely that string is. The overview page frames it as a way to see whether your strategy "runs the risk of wiping out your account before it can turn a profit." For a prop firm trader, that sentence is the whole job.

How to Run a Monte Carlo Simulation in NinjaTrader 8

You need a finished test first. Monte Carlo works on trade results, so it can only run after the Strategy Analyzer has produced a list of trades. According to the help guide, the steps are:

  1. Run a Backtest, Optimization, or Walk-Forward Optimization in the Strategy Analyzer.
  2. Click the Trades tab in the report.
  3. Right-click in the trades grid and choose Monte Carlo Simulation...
  4. Set your parameters and press Generate.

The overview page also notes that Monte Carlo Simulation can be selected from the display drop-down once a backtest has run, so you may reach it either way depending on how your Strategy Analyzer is laid out.

The fact that it works on Walk-Forward Optimization results is the most useful detail on that list. Running Monte Carlo on out-of-sample trades is far more honest than running it on an in-sample optimization, and we will come back to why.

The Parameters, and How We Set Them

NinjaTrader exposes seven settings in the Monte Carlo window. Here is what each one does, based on the help guide, along with how we think about it for an automated futures strategy.

Parameter What it does How we use it
Graph Sets the statistic the report is generated on Start with Cumulative Profit, then check every risk statistic your version offers
W/L Shows winners only, losers only, or both Leave on both for a realistic run
Long/Short Shows long trades only, short trades only, or both Split it once to see if one side carries the whole strategy
Remove winning outliers (%) Removes the top percentage of trades from the results The most revealing setting on the screen (see below)
Remove losing outliers (%) Removes the bottom percentage of trades from the results Use rarely. Removing your worst losses flatters the result
# of simulations Sets how many simulations to run More runs give a smoother, more stable curve
# of trades per simulation Sets the trades in each simulation, defaulting to the number in the Trades tab Match it to the horizon you care about, like the trades in one evaluation

Trades per simulation is the setting prop traders should change

By default each simulation contains as many trades as your backtest produced. If your backtest covers a year and 400 trades, each simulation is a full imaginary year. That answers a long-term question. A prop evaluation asks a short-term one: what happens over the next few weeks of trades?

Set the trades per simulation to roughly the number of trades your strategy takes over an evaluation window. Now each simulation is one imaginary evaluation, and the distribution tells you how those evaluations tend to go. Short windows are where luck dominates, and that is exactly where a trailing drawdown does its damage.

Remove winning outliers is the honesty test

Many trend-following and breakout strategies make most of their money on a small number of large winners. That is not a flaw on its own. It becomes a problem when you do not know it. Set Remove winning outliers to a small percentage and generate again. If the cumulative profit curve collapses toward zero or below, your edge lives in a handful of trades. Miss those few trades live, through a disconnect, a filter, or a trading pause, and the strategy stops being profitable.

We do not treat this as a reason to throw a strategy away. We treat it as a reason to protect the big trades: no early exits that cut them short, no time filters that block them, and no daily profit caps that close the strategy before they can run.

How to Read the Monte Carlo Graph

The graph confuses a lot of people the first time, so it is worth slowing down. The help guide explains the axes this way:

NinjaTrader's own example uses 100 simulations on the Cumulative Profit graph. At the 50% mark on the X-axis, half the simulations finished below the matching profit value and half finished above it. That point is the median outcome. Read further left and you are looking at the unlucky runs. At the 10% mark, only one simulation in ten did worse than that value.

That left edge is where the useful information lives. The median tells you what a typical run looks like. The left tail tells you what a bad stretch looks like, and a bad stretch is what fails an evaluation. The help guide describes the purpose as judging whether the risk and reward between worst and best case scenarios "is acceptable or not." For a prop account, acceptable has a hard number attached: your drawdown limit.

A hypothetical example

Suppose you run an NQ strategy on a prop evaluation with a $2,500 trailing drawdown, and it takes about 60 trades in a typical evaluation window. Your backtest shows a worst drawdown of $1,800, which looks safe. You open Monte Carlo, set 60 trades per simulation and a large number of simulations, and check the low end of the distribution. If a meaningful share of those imaginary evaluations end down more than $2,500, or if the drawdown statistic in your Graph list shows the same thing, the $1,800 figure was one lucky ordering. The fix is usually position size: cut contracts until the bad runs fit inside the limit with room to spare.

What Monte Carlo Cannot Tell You

Monte Carlo is useful because it is simple. That simplicity also creates blind spots, and an automated trader needs to know all of them.

It assumes trades are independent

Random sampling treats every trade as an independent draw. Real markets do not work like that. Losing trades tend to cluster in certain conditions: a choppy week, a low volume holiday stretch, a regime that does not suit your logic. Shuffling breaks those clusters apart, so the simulated losing streaks can be shorter than the ones you will meet live. Treat the worst simulated run as a floor for how bad things can get, not a ceiling.

It only sees closed trades

The simulation reshuffles trade results. It does not see what happened inside each trade. A prop firm with an intraday trailing drawdown can track your unrealized profit while a trade is open. A trade that runs up $800, gives it all back, and closes at breakeven shows as a zero in the trade list. Under an intraday trailing rule, that same trade may have pulled your drawdown floor up by a meaningful amount. Monte Carlo on closed trades will understate that risk. If your firm uses intraday trailing, read our breakdown of intraday vs end-of-day trailing drawdown before you size off a Monte Carlo result.

It cannot fix a bad backtest

Monte Carlo only rearranges the trades you give it. If those trades came from a curve-fit optimization, the simulation will produce a nice, confident distribution of curve-fit results. Garbage in, shuffled garbage out. The same goes for unrealistic fills. If the backtest assumed no slippage or no commission, every simulation inherits that assumption. Our post on why your NinjaTrader 8 backtest doesn't match live trading covers the fill and data gaps that need fixing first.

It does not know the calendar

A shuffled trade list has no idea that a trade happened on an FOMC day or a rollover week. Rules tied to dates and times, like news restrictions or a consistency rule on your best day, are outside what the simulation measures. Check those separately.

Our Monte Carlo Workflow for Prop Firm Strategies

Here is the order we run things in. Each step only means something if the step before it was done honestly.

  1. Build a realistic backtest. Commission and slippage on, the correct contract and session template, and enough history to cover more than one market regime.
  2. Run a walk-forward optimization. Keep the out-of-sample trades as the ones you trust. If you have not done this before, start with our walk-forward optimization guide for NinjaTrader 8.
  3. Run Monte Carlo on the out-of-sample trades with the full trade count. Note the median and the low end of the Cumulative Profit distribution.
  4. Run it again with trades per simulation set to one evaluation. This is the prop firm view. Look at how often a short run ends in a loss bigger than your drawdown limit.
  5. Run it again with winning outliers removed. If the edge disappears, protect the big trades in your rules and in your live setup.
  6. Split long and short once. If one side is carrying everything, decide whether the other side deserves to trade at all.
  7. Size to the bad tail, not the median. Choose a contract count where the unlucky runs still fit inside your drawdown with a buffer, then add room for the intraday effects Monte Carlo cannot see.

None of this predicts the future. What it does is replace one lucky looking equity curve with a range of outcomes, and make you choose your position size with your eyes open.

Start from a strategy built for prop firm drawdowns

NQ Ultra is a ready-to-run NinjaTrader 8 strategy for NQ futures, built and tested for prop firm accounts. Run it through the Strategy Analyzer, stress-test it yourself, and size it to your account.

Get NQ Ultra on Whop

Common Monte Carlo Mistakes

Monte Carlo will not make a weak strategy strong. It will tell you how fragile your result is, how much of it depends on a few trades, and how much size your drawdown limit can really carry. A prop firm will run that stress test on you whether you like it or not. It is cheaper to run it yourself first, in the Strategy Analyzer, before any money or any evaluation fee is on the line.