Win rate describes individual trades. Passing a challenge depends on an entire path. A strategy can win more than half its trades and still reach a loss boundary before its profit target. Monte Carlo analysis connects the trade distribution, position size, account rules and evaluation horizon. Its output is a conditional estimate, not a certificate of future success.

The practical objective is to answer a clear question: if the trading process behaved like the model, how often would it reach the target before a rule breach and before a specified deadline? A useful answer includes failures, unfinished attempts and uncertainty about the source data. Reporting only a smooth equity fan or one passing percentage leaves out most of the decision.

Start with a model simple enough to verify

Take an initial balance of $100,000, a target of $110,000 and a failure boundary of $90,000. Each completed trade adds or subtracts $1,000. The win probability is 55%, each outcome is independent, and the horizon is 100 trades. Stop at the first touch of either boundary. Deliberately omit daily limits, fees and open-position fluctuations in this teaching example.

Risk is fixed at 1% of the initial balance. It does not compound with current equity. After a loss, the next trade still risks $1,000. Changing that detail changes the reachable account values and the passing probability. A reproducible report should never describe both fixed-cash risk and current-equity risk simply as 1% without saying which basis is used.

Outcome by trade 100Exact model probabilityMeaning
Passed66.784%Reached +$10,000 first
Failed8.978%Reached −$10,000 first
Unfinished24.238%Neither boundary reached

These values can be calculated without random sampling. Keep the probability mass at every surviving integer profit state from −9 to +9. At each trade, move 55% of each state's mass one step upward and 45% one step downward. Absorb mass reaching +10 into passed and mass reaching −10 into failed. After 100 iterations, sum the remaining states to obtain unfinished probability.

This exact calculation is a valuable unit test for a Monte Carlo engine. A sufficiently large simulation of the same assumptions should approach these values within its sampling error. If it does not, check stopping order, boundary equality, compounding and whether failed paths accidentally continue trading.

Passing, failing and still runningExact model probabilities, without simulation noise. Independent 55% wins, ±$1,000 and absorbing boundaries at $110,000/$90,000 from $100,000. The three probabilities sum to 100% at every trade. Passed: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.253, 0.253, 0.88, 0.88, 1.889, 1.889, 3.233, 3.233, 4.849, 4.849, 6.672, 6.672, 8.647, 8.647, 10.725, 10.725, 12.868, 12.868, 15.045, 15.045, 17.233, 17.233, 19.413, 19.413, 21.571, 21.571, 23.697, 23.697, 25.783, 25.783, 27.823, 27.823, 29.814, 29.814, 31.752, 31.752, 33.637, 33.637, 35.467, 35.467, 37.241, 37.241, 38.962, 38.962, 40.628, 40.628, 42.24, 42.24, 43.801, 43.801, 45.31, 45.31, 46.77, 46.77, 48.181, 48.181, 49.545, 49.545, 50.863, 50.863, 52.137, 52.137, 53.367, 53.367, 54.556, 54.556, 55.705, 55.705, 56.814, 56.814, 57.886, 57.886, 58.921, 58.921, 59.921, 59.921, 60.887, 60.887, 61.82, 61.82, 62.721, 62.721, 63.591, 63.591, 64.432, 64.432, 65.243, 65.243, 66.027, 66.027, 66.784. Failed: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.034, 0.034, 0.118, 0.118, 0.254, 0.254, 0.435, 0.435, 0.652, 0.652, 0.897, 0.897, 1.162, 1.162, 1.442, 1.442, 1.73, 1.73, 2.023, 2.023, 2.317, 2.317, 2.61, 2.61, 2.9, 2.9, 3.186, 3.186, 3.466, 3.466, 3.74, 3.74, 4.008, 4.008, 4.268, 4.268, 4.522, 4.522, 4.768, 4.768, 5.006, 5.006, 5.238, 5.238, 5.462, 5.462, 5.678, 5.678, 5.888, 5.888, 6.091, 6.091, 6.287, 6.287, 6.477, 6.477, 6.66, 6.66, 6.838, 6.838, 7.009, 7.009, 7.174, 7.174, 7.334, 7.334, 7.488, 7.488, 7.638, 7.638, 7.782, 7.782, 7.921, 7.921, 8.055, 8.055, 8.185, 8.185, 8.31, 8.31, 8.432, 8.432, 8.549, 8.549, 8.662, 8.662, 8.771, 8.771, 8.876, 8.876, 8.978. Unfinished: 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99.713, 99.713, 99.001, 99.001, 97.857, 97.857, 96.333, 96.333, 94.5, 94.5, 92.431, 92.431, 90.191, 90.191, 87.834, 87.834, 85.403, 85.403, 82.933, 82.933, 80.45, 80.45, 77.977, 77.977, 75.529, 75.529, 73.117, 73.117, 70.751, 70.751, 68.436, 68.436, 66.178, 66.178, 63.979, 63.979, 61.841, 61.841, 59.766, 59.766, 57.752, 57.752, 55.801, 55.801, 53.911, 53.911, 52.081, 52.081, 50.311, 50.311, 48.598, 48.598, 46.943, 46.943, 45.342, 45.342, 43.795, 43.795, 42.299, 42.299, 40.854, 40.854, 39.458, 39.458, 38.11, 38.11, 36.807, 36.807, 35.548, 35.548, 34.332, 34.332, 33.158, 33.158, 32.023, 32.023, 30.928, 30.928, 29.87, 29.87, 28.847, 28.847, 27.86, 27.86, 26.907, 26.907, 25.986, 25.986, 25.097, 25.097, 24.238Passing, failing and still runningPassedFailedUnfinished020406080100020406080100Trade numberProbability (%)
Exact model probabilities, without simulation noise. Independent 55% wins, ±$1,000 and absorbing boundaries at $110,000/$90,000 from $100,000. The three probabilities sum to 100% at every trade.

Do not discard unfinished attempts

The three probabilities add to 100%. Among resolved attempts, the passing share is larger than 66.784%, but that is not the probability of passing within 100 trades. Removing unfinished attempts silently changes the question. Keep them visible, particularly when comparing conservative position sizes or strategies with few trading opportunities.

A chart of cumulative passing probability normally rises and then flattens as fewer live paths remain. The flattening can be legitimate. It can also reveal a horizon or scheduling bug. To distinguish the two, inspect the number of active paths at each step and verify that each path continues until its own terminal event or the actual horizon.

Time to pass should usually be summarized among passing paths and explicitly labeled that way. A median of 40 trades among successful attempts does not mean a typical purchased attempt will pass after 40 trades. Failed and unfinished attempts have different outcomes. A planning report should show their shares alongside conditional completion times.

Separate simulation error from uncertainty in the strategy

If the model's pass probability is around 67%, 10,000 independent simulated paths have a Monte Carlo standard error of roughly sqrt(0.67 × 0.33 / 10,000), or 0.47 percentage points. At 500,000 paths it falls to about 0.067 percentage points. More paths make the numerical estimate more stable, but they do not establish that the assumed 55% trading win rate is correct.

Suppose a historical sample contains 28 winning trades out of 50. Its observed win rate is 56%. A 95% Wilson interval for an independent binomial sample is approximately 42.3% to 68.8%. This interval describes uncertainty in a simplified constant-probability model. It is already wide before considering market changes, correlated trades, selection bias or errors in execution costs.

When those plausible win probabilities are fed into a boundary model, the range of pass probabilities can become much wider than the simulation's numerical error bars. That is why a result such as 66.8% should never be presented as a precise statement about a trader's real chance. The simulation is precise about its assumptions. The assumptions may be uncertain.

The Wilson interval is a frequentist procedure with a coverage interpretation across repeated samples. It is not literally a 95% probability that a fixed unknown win rate lies in this particular interval. For trading decisions, its practical value is to discourage treating a small historical sample as an exact parameter. NIST documents the calculation and its behavior for binomial proportions.

More observations narrow win-rate uncertainty28/50 wins from the worked example, plus hypothetical sample-size comparisons of 110/200 and 550/1,000. Wilson intervals describe independent binomial win-rate uncertainty, not the precision of a simulated pass rate. Observed win rate · Wilson 95% interval: 56, 55, 55More observations narrow win-rate uncertaintyObserved win rate · Wilson 95% interval304050607080502001,000Independent observed tradesWin probability (%)
28/50 wins from the worked example, plus hypothetical sample-size comparisons of 110/200 and 550/1,000. Wilson intervals describe independent binomial win-rate uncertainty, not the precision of a simulated pass rate.

Use full trade outcomes when available

Real strategies rarely produce only +1R and −1R. They may have partial exits, small scratches, occasional large winners and losses exceeding the planned stop. Store each completed trade's net result divided by its planned entry risk. A $300 gain on a trade that initially risked $200 is +1.5R. A $260 loss on that same risk is −1.3R.

Sampling these observations with replacement preserves the empirical mixture of outcomes. One sampled path might contain the same historical trade several times and omit another. That is normal for a bootstrap. It differs from shuffling every observed trade exactly once, which holds the final total fixed and primarily explores ordering risk.

Check how transaction costs are included. If the source R values are already net of commissions and modeled slippage, do not subtract those costs again. If you stress an additional dollar of slippage, apply only the incremental cost with the correct number of contracts and sides. Otherwise an apparently conservative simulation can merely be double-counting expenses.

Preserve meaningful dependence

Independent trade resampling assumes that the sequence can be broken apart without losing important information. This is often unrealistic. Several trades may react to the same market event, or a strategy may lose throughout a low-volatility week. Resampling individual trades can distribute those losses more evenly than they occurred historically.

One alternative is to resample whole sessions. Another is a moving-block bootstrap that samples adjacent groups of observations. The block length expresses how much dependence you intend to preserve. Very short blocks can miss clustering, while very long blocks leave few effectively different samples. Compare several defensible lengths rather than optimizing the block size until the result looks attractive.

Daily-limit simulations especially need coherent sessions. Preserve the within-session trade order and, when available, intraday equity checkpoints. A daily loss boundary cannot be evaluated accurately from an unordered bag of daily closing balances. If a data set cannot establish open losses, describe the resulting limitation directly in the analysis.

Build a risk sensitivity curve

Repeat the same experiment across a modest grid of position sizes. Keep the random paths paired so differences are easier to interpret. For each size, report pass probability, failure probability, unfinished probability and time to pass. Do not select a size only because its base-case pass percentage is fractionally higher than its neighbors.

Look for a region that remains usable when costs rise or the estimated edge weakens. The historical best point can be a sampling accident. A small change from 0.9% to 1.0% risk may cause a discontinuity in a simple fixed-step model because a different number of losses reaches the boundary. That is a mathematical grid effect, not necessarily an economically meaningful optimum.

Position rounding matters too. A futures strategy cannot generally trade 0.37 standard contracts. Convert risk to allowable contract quantities and then recalculate the realized cash exposure. If the smallest trade exceeds the desired risk, the model should not invent fractional fills. A compatible smaller contract may help, but its fees and liquidity need their own assumptions.

Run adverse scenarios without pretending they are forecasts

A practical sensitivity table changes one assumption at a time. Increase average execution cost, reduce large winning outcomes, preserve longer loss clusters or evaluate a newer out-of-sample segment. These changes reveal which part of the estimated edge supports the passing probability. They are not predictions that a particular adverse scenario will occur.

Also test structural mistakes. Shift session boundaries to the correct timezone, include open losses, enforce minimum trading days and apply the actual trailing rule. These are not optional pessimistic scenarios if the contract requires them. They belong in the base model. Stress tests come after the contract itself is represented correctly.

If the strategy was chosen from hundreds of candidates, its observed trade sample is selected rather than neutral. Bootstrapping that winning sample alone does not correct the original selection process. Reserve untouched data, record how many alternatives were tried and avoid repeatedly choosing the version with the most flattering simulated pass rate.

A practical reporting checklist

  1. Name the code version and exact inputs behind the historical trades.
  2. State sample dates, trade count, costs and the definition of one R.
  3. Specify the program boundaries, timezone, risk basis and horizon.
  4. Identify whether paths use independent trades, sessions or blocks.
  5. Show passed, failed and unfinished proportions that sum to 100%.
  6. Report simulation precision separately from source-data uncertainty.
  7. Show sensitivity to weaker outcomes and realistic execution changes.

A useful conclusion might say that a selected setup performs acceptably under the base assumptions but becomes sensitive to clustered losing days. That observation tells you what to investigate. It is more actionable than claiming a universal 67% chance of passing. Monte Carlo is most useful when it exposes a dependency you can test, rather than concealing uncertainty behind a large number of simulated paths.