Monte Carlo Simulation


Real-life is full of uncertainties. But, that does not mean that we have to leave everything to fate. There is a way to estimate uncertainties. And that is what Monte Carlo Simulation does. To understand Monte Carlo Simulation, first, let's talk about Random Variables

What is a Random Variable?

You know that,

Profit = Revenue - Expense

If you want to look back at your past year, yes, you know the value of revenue and expense from the past year. You can plug in those numbers to the given equation and get a value for Profit, which is also a calculated and known number.

But, when you want to predict your future, you do not know what will be your expense and what will be your revenue. So, you cannot calculate your future profit directly.

You may think of a way to estimate the range of possible values of profit like this:

If your Revenue will be 100$, and the Expense will be 20$, then your profit will be 80$.
If your Revenue will be 200$, and your Expense will be 30$, your profit will be 170$.
.........
An unlimited number of statements can be drawn from the above equation. No, it is not a nice way. There can be an unlimited number of combinations that are not possible to manage.

But, say, you can guess a probability distribution of your expense and revenue (based on your experience and history), then, you should be able to estimate your profit, in terms of a probability distribution.

So, your refined formula for calculating profit should become:

Probability Distribution of Profit = Probability Distribution of Revenue - Probability Distribution of Expense

Now, the question is, how can you deduct one probability distribution from another. A probability distribution is not a single number that you can simply type into your calculator and hit the big PLUS button or the minus button.

The answer is "Monte Carlo Simulation". Using Monte Carlo Simulation, you can get the value of "Profit" as a Random Variable when your Revenue and Expenses are random variables.

Monte Carlo Simulation is a technique that performs random sampling to achieve such a goal. So, let's clarify what Random Sampling is.

Random Sampling

Think about this probability wheel or a roulette.

Roulette-style probability wheel used to introduce Monte Carlo simulation, with the wheel divided into Red (75 percent) and Blue (25 percent) sectors.

If you spin this roulette and stop, what do you expect to get on average? "Red" or "Blue"? You can expect that, out of 4 times, 3 times you may get "Red" and 1 time you can get "Blue", right? Because red covers 75% of the disc and blue covers 25% of the disc. In another word, "red" and "blue" follows a probability distribution, as red -> 0.75, blue -> 0.25. Random Sampling is a sampling technique, where a probability wheel is created according to the probability distribution of various numbers and taken a sample from the probability wheel.

For example, say you have a probability distribution like this:

Triangular probability distribution example used to illustrate how a random sample can be drawn from a continuous distribution during Monte Carlo simulation.

So, if you want to get a random sample from this probability distribution, you can create a probability wheel where each value or outcome will represent a pie in that wheel and the area of that pie will be proportional to the probability of that outcome, which you will get from the probability distribution. Notice that the probability of 30 is 0.02 in the given triangular probability distribution. So, there will be a pie representing the value of 30, in your probability wheel and that pie will cover 2% of the wheel area. Once you create such a probability wheel, if you spin and stop 100 times, you can expect 2 times, the pie for number 30 will show up. For every probability distribution, there is a mathematical formula available for such a hypothetical probability wheel. Most of them are complex to calculate. But, when you use the SpiceLogic Rational Will or Decision Tree Software, the software will take care of such calculation, while you can focus on the big picture of your decision problem.

How Monte Carlo Simulation can evaluate the function of Random Variables.

Ok, so far, you understood what Random Variable and Random sampling are. Say, you are a project manager of a project where you need to predict the profit of your next project, where you have evaluated the probability distribution of Revenue and Cost from various statistical data.

Say, your Revenue follows a Probability Distribution (Normal Distribution) as shown below.

Normal probability distribution used to model the uncertain Revenue input in the Monte Carlo simulation walkthrough.

And Expense follows a probability Distribution (Triangular Probability Distribution) as shown below.

Triangular probability distribution used to model the uncertain Expense input in the Monte Carlo simulation walkthrough.

As we already mentioned, if you think of creating many combinations like:

Combination 1: Revenue is 500$, Expense is 300$
Combination 2: Revenue is 501$, Expense is 301$
….
.....
You will be overwhelmed. You cannot manage to get all these combinations like this way, right?

Here 'Monte Carlo Simulation' comes to the rescue. What you need to do is, take a random sample from the Revenue probability distribution. Say, you got 500$. Then, take a random sample from the Expense probability distribution. Say, you got 200$. So, for the first round of sampling, your total profit is 500$ - 200$= 300$.

Now, take another random sample, say, it is 400$ for Revenue, and 300$ for Expense. So, for the second round of sampling, your profit will be 100$

Keep doing for many many times, (usually 10,000 times or more).

After taking thousands of samples, you can organize the sample data to a histogram, where, the X-axis indicates a range of profit, and the Y-axis represents the number of random samples fell into that profit range.

Histogram of 10,000 Monte Carlo samples of the Total Combined Cost of Item A and Item B, with the number of occurrences in each thousand-dollar bucket from 1k to 20k.

From the above chart, you can understand that, out of 10,000 samples, 200 of them fell into the profit between 1,000$ to 2,000$. 300 of them fell into the range of 2,000$ to 4,000$ and so on.

As we get the total count for each profit range, we can get the probability of a range as :
sample count in a range/total samples (which is 10,000).

So, the probability of the profit range 1,000$ to 2,000$ is = 200/10,000 = 0.02. Finally, we can get the probability distribution of profit, like this:

Risk profile derived from the Monte Carlo histogram by converting each bucket's sample count into a probability, showing the Total Combined Cost of Item A and Item B distribution.

This way of finding an ultimate probability distribution of a dependent random variable is called "Monte Carlo Simulation".

Step by Step Modeling Example

Ok, let's model the discussed random function Profit = Revenue - Expense, where both Revenue and Expenses are random variables.

Start the Decision Tree analyzer and model a simple decision tree like this, where there are just one Decision Node and one action.

Starting state of the Monte Carlo walkthrough, with the Payoff button on the node flyover menu highlighted as the first step.

Once you click the "Pay off" button first time in the project, you will be asked if you want to use a regular single/multiple criteria analysis or Cost-Effectiveness analysis. Choose the first option. 

Payoff type selection dialog offering regular single or multi-criteria analysis versus Cost-Effectiveness analysis on the first Payoff click in a project.

Then you will be presented with the following screen. Select "Maximize" and enter "Revenue" as shown below.  

Objective creation wizard with Maximize selected and Revenue entered as the criterion name.

Then click the "Proceed" button. You will be asked about the type of criterion. Select "Numerical Type".

Objective wizard step asking the criterion type for the Revenue criterion, offering Subjective Type or Numerical Type cards as choices.

Then, you will be asked to enter the Minimum value, Maximum value, and a unit. Let's use $ as the unit, the minimum value is 0, and the maximum value is 1000$.

Objective wizard step for Revenue, with minimum 0, maximum 1000 and unit set to dollar sign.

Then click the button "Proceed". You will be asked if you have another criterion to add. Click Yes. And then, in the same way, create a numerical objective "Minimize Expenses".

Once you are done adding the second criterion, answer "No" when you are asked to add another criterion.

Wizard prompt asking whether another criterion needs to be added, answered No after Revenue and Expenses are defined.

Now, you will be asked to set up a trade-off between the criteria, to form a multi-criteria utility function. You have various choices like Pairwise comparison, custom expression, etc. Let's choose the Custom Multi-Criteria Utility Function from the following screen.

Multi-criteria trade-off setup screen offering Pairwise comparison, Custom Multi-Criteria Utility Function and other options for combining the two criteria.

Once you click the box "Custom Multi-Criteria Utility Function", a rich math-based equation editor will appear. In this expression editor, you can use a rich math-based function, like sqrt([Revenue] - ln([Expenses]) etc. Our expression is very simple. Just [Revenue] - [Expenses], so keep the expression as shown here.

Custom Multi-Criteria Utility Function editor with the rich math expression [Revenue] - [Expenses] entered to define Profit.

Then, click the "Proceed" button. You will be taken back to the Decision Tree. The payoff editor will be shown. You may enter simple values for Revenue as 500$ and Expenses as 300$. You will see that the node shows the value as 300$, which makes sense, as according to our custom expression, Revenue - Expenses = 500 - 200 = 300.

Payoffs at Investment A panel with Revenue 500 dollars and Expenses 200 dollars entered as numbers, producing Profit 300 dollars on the node label. Callout points to the probability distribution button.

Ok, now, let's use a probability distribution "Revenue". Click the probability distribution icon in the Revenue row as shown in the above screenshot. The probability distribution window will show up. Then click the "Continuous Uniform" distribution as shown below.

Probability distribution gallery with the Continuous Uniform distribution selected for the Revenue input.

We just left the default setup and clicked the OK button.

Continuous Uniform distribution dialog accepted with its default parameters for the Revenue input in the Monte Carlo walkthrough.

Same way, set another probability distribution for the Expense criteria. This time, choose "Exponential" distribution from the probability distribution gallery. Keep the default setup and proceed, as shown below.

Finally, the payoff editor in the Decision Tree diagram will look like this.

Payoff editor in the decision tree diagram after assigning a Uniform distribution to Revenue and an Exponential distribution to Expenses.

Alright. now, let's see the magic. Open the Options Analyzer and notice the Risk Profile chart carousel. 

Keep the action node "Investment A" selected in the diagram and expand the tab "Node Analyzer". Also, in the Ribbon, you will see a number box for "Number of Iteration" under "Monte Carlo Simulation". Set that to 10,000. A higher number of iterations gives a better result. 

Options Analyzer Risk Profile chart for Investment A after a Monte Carlo run with 10,000 iterations and 12 bins, with a callout pointing to the iteration count input.

Cool. Now, we can see a probability distribution of our Random Variable "Profit" which is equal to the Random Variable "Revenue" - Random Variable "Expenses". The decision tree analyzer software has performed a Monte Carlo simulation for us and produced this probability distribution. This probability distribution chart is the result of a deduction of two probability distributions, as defined in our custom expression editor.

If you add another action node to the Decision Node, then based on Monte Carlo simulation, the action that gives a higher expected value, can be chosen as an optimum action.

 In the ribbon, there is another number input called "Max bin count". The bin count indicates, how many bins or segments we should use to distribute the simulation results. If you use a high number of bins, then the simulation result will look evenly distributed among all bins which may not be very useful. If you use a very low number of bins, you will see the results are highly varied between bins and that may be useful for many analyses. By default, the decision tree software uses 12 bins. Let's change that to 5 bins. See the result.

Monte Carlo risk profile chart drawn with 5 bins, showing a coarser segmentation of the simulated Profit distribution.

Now, you see, the results are segmented between a few segments. The following screenshot shows the risk profile with 9 bins and 50 bins respectively.

Side-by-side comparison of the same Monte Carlo risk profile rendered with 9 bins and with 50 bins, showing how bin count affects the chart's resolution.

Random Function as a decision tree

Let's model something for real. Say, you are planning for a vacation where you can go by car or by plane. If you go by car, your car can break down on the road and it may cost a variable amount of money. Also, you know that the cost of a plane ticket does not stay the same. It changes all the time. Assuming that you have learned how to create a decision tree using the Decision Tree software. Let's create a decision tree like this:

Vacation decision tree comparing Go by car (with a 0.3 chance of breakdown) against Go by plane, used for the longer Monte Carlo modeling example.

You are assuming that the probability of getting the car breakdown is 0.3. So, set the probability as shown in the above screenshot.

Now, let's create an objective "Minimize Cost". From the flyover menu of the "Go by car", click the "Payoff" button. The objective creation wizard will appear. Create an objective "Minimize Cost" same as before. Chose that as Money type or Number type with unit "$", minimum value 0 and maximum value 1000$ as shown below.

Objective creation wizard configuring the Minimize Cost objective with its allowed payoff range for the vacation example.

Then, click Proceed. When you will be asked, if there are any more objectives to add, answer 'No', and then, you will be taken to the decision tree, like this.

Vacation decision tree with the Payoffs at Go by car panel open and a callout pointing to the probability distribution button next to the Cost objective.

Say, your cost for driving by car, can be anywhere from 100$ to 500$, because, you do not know how much would be the gas prices in various locations, how much food you may need to buy, etc. But, you can guess that most probably the cost will be close to 300$. The probability of the cost '500$' or '100$' is relatively low. Therefore, a normal distribution with a mean of 300$ can suit this scenario, right? Let's click the probability button from the payoff editor, and chose "Normal Distribution" this time.

Probability Distributions gallery dialog with a 'Select Normal' callout pointing at the Normal thumbnail, the chosen distribution for the Car cost.

Once you select the normal distribution, you can specify the mean and standard deviation.

Detail view of the Normal Distribution editor where the mean and standard deviation for the Car cost are specified.
\

Click Ok, to accept the modeled probability distribution. The decision tree diagram will look like this.

Vacation decision tree updated to show the Car cost node carrying a Normal probability distribution as its payoff.

Now, use a probability distribution for a Car break down the cost, which you are thinking, maybe within 400$ to 800$, and you do not have any clue about the most likely value. So, you can use a uniform probability distribution. According to the principle of indifference, if you have no reason to believe that one event will occur more likely than another event, then you can assume the same probability for all possible events. Therefore, according to that principle, as you cannot guess what kind of car breakdown may happen, you may use the continuous uniform distribution where the probability of each input is the same. So, same like the Car cost, attach a Uniform probability distribution that ranges from 400 to 800, like this:

Uniform distribution chosen for the Car break down cost, modeling a 400 to 800 dollar range without committing to a most likely value.

And use another probability distribution for the Plane cost. You are assuming that the most likely value for a plane cost is 400$. But, it can be more or less, perhaps, 300$ to 700$. You may use a Triangular probability distribution or Normal Distribution, whatever you feel confident about. I think a triangular probability distribution may make sense, like this:

Triangular distribution chosen for the Plane ticket cost, with most likely 400 dollars and a range from 300 to 700 dollars.

So, finally, the decision tree will look like this.

Final vacation decision tree with normal, uniform and triangular probability distributions assigned to every uncertain cost, ready for Monte Carlo simulation.

Ok, you have completed the modeling. Now, you can expand the Options analyzer panel to see all the calculated results. And guess what, the Monte Carlo Simulation is already performed for you. Just notice the probability distribution shown in the risk profile panel at the options analyzer, this probability distribution is the result of Monte Carlo Simulation.

Options Analyzer panel showing the Monte Carlo simulation result for the vacation decision tree, with the risk profile automatically generated.

You can resize panels to get a better view of the results. As shown below. (Notice that, Stochastic Dominance is also calculated from the risk profile). Expand the Stochastic Dominance Panel to see the dominance diagram.

In the Risk Profile chart, select CDF view to see the Cumulative Distribution Function which is a better view for understanding Stochastic Dominance. Also, check the Continuous View checkbox as shown in the following screenshot which gives a better graphical view.

Stochastic Dominance panel and dominance diagram computed from the Monte Carlo risk profile for the vacation example.

Explanation of the Result

Ok, the SpiceLogic Rational Will or Decision Tree Software has generated the Probability Distribution (In the Risk Profile panel). But How? The software, created thousands of random samples as follows:

1. A random sample is taken from the probability distribution of the "Go by Car" node. Say, that value is "p". Then, applying the probability wheel, from the chance node, an event node is selected based on the probabilities of the event node (i.e. 0.3 for the car break down). If the "Car breaks down" node was selected from the probability wheel of the chance node, a random sample is taken from the probability distribution of the "Car break down" cost. Say, that value is "q".

So, in the first round, the total cost is calculated as "p + q".

2. The same process continued thousands of times and a lot of outcomes were calculated. The software decides to show 100 groups of data. Therefore, it creates a group interval for the total outcome such that, there will be a maximum of 100 groups. As you can see from the above screenshot, where the tooltip shows the group "-932.36 to -920.36" is a group of the outcome, and the probability of that group is 0.01.

Options for Monte Carlo Simulation

By default, the Monte Carlo Simulation option is turned on for any scenario when a Probability Distribution is used.

Monte Carlo Simulation options on the Methods ribbon, with the execution mode dropdown open and showing Always Instantly, Not instantly, and When Probability Distribution Used choices.

You can turn off that behavior completely by setting the drop-down box selection to "Not Instantly" as you can see in the above screenshot. If you set it to "Not Instantly", then, you will see a button to Execute the Monte Carlo Simulation so that you can manually execute the Monte Carlo Simulation whenever you wish.

Methods ribbon in Not Instantly Monte Carlo mode with the Run Monte Carlo Simulation Now button highlighted by a callout for running the simulation on demand.

If you set the option to "Always Instantly", then no matter if Probability Distribution is used or not, if there is at least a chance node in a decision tree, Monte Carlo simulation will be used to generate the Risk Profile.

Last updated on Jan 7, 2026