Market Sizing for a company using Monte Carlo with Python

Ricardo Rosas
4 min readDec 29, 2020

tl;dr: Run 100 000 scenarios based on different assumptions to find out the potential market size for a new company and what variables are most important. Here’s the python code :)

Market Sizing using MonteCarlo with Python

Let’s say you are considering opening up a restaurant or a new business. How much revenue will it make per year?
Nobody knows.
And yet, you need to at least have a rough idea in which neighborhood you may land. Will it be 100k, 500k, 1 mn? Having realistic expectations can help you decide if it it will be a good investment or not. This is where Market Sizing comes into play. Market sizing is an exercise in which you try to estimate the total size of the market by thinking logically through the elements that make up revenue. In its most simple form, it will be the quantity you sell multiplied by the price.

Example: Venezuelan food restaurant in Barcelona
Since I am writing this during my holidays in Barcelona and I grew up in Venezuela, I decided to use arepas, a delicious Venezuelan staple, as an example. Note: I have no idea about the restaurant business, so all my assumptions are taken out of thin air.

Structure of market size logic

The base case is quite limited — it does not capture uncertainty!

Taking some assumptions can help you build your base case, a scenario that is reasonable.

Calculating the base case market size

In the case of the Arepas restaurant, I am assuming they will be open for 12 hours per day (from 11:00 to 23:00), out of which 4 hours will be peak hours (2 for lunch, 2 for dinner), selling on average 40 arepas per hour; and in the other 8 hours, they would sell on average 15 arepas per hour. Add this all up and you get around ~300 arepas per day / ~100 thousand arepas per year; assuming they each sell for 4 EUR (excluding drinks) and you get your base case of 400 000 EUR per year as revenue (without considering costs). This can already be quite useful. If you are reasonably confident about these assumptions, it can give you an informed expectation on your yearly revenues.

Integrating uncertainty

However, opening up a new business is filled with uncertainty. Will you have 2 or 4 hours of peak time per day? Will you sell those delicious arepas for 3 or 4 or 5 EUR? And just how many arepas per hour will you sell? In order to calculate your market size, you will need to make some assumptions. But these assumptions need not be static numbers. You can think in terms of ranges (e.g. I would likely sell between 30–60 arepas per hour during peak hours).

By using ranges, you can integrate uncertainty into your thinking and determine what are the variables that have the largest impact on your cool new business. You should focus in learning more about those variables to reduce the uncertainty. In this model, we use a Monte-Carlo simulation, which is just a fancy way of saying random experiments. Basically, I use 100,000 different scenarios, each one with different assumptions (e.g. for scenario 1, I take a price of 5, opening up 347 days a year; in scenario 2, the price is 3.4 and opening 352 days a year).

Range of Market Sizes

In this example from the image above, based on the assumptions, we can estimate that yearly revenues will likely be between 270 and 600 kEUR; and most likely around ~400 kEUR per year [reminder: I have no idea how realistic these assumptions are]. Once you consider the costs: fixed (e.g. rent, employees) and variable (e.g. ingredients, delivery) you can estimate what is the likelihood that you will make a profit or a loss given your assumptions. This is a much better way to think about market sizes than just blindly following the base case.

It can also shed some light into what are the most important variables considering the uncertainty in your assumptions.

Assumptions behind the model

In this case, price is the largest driver of uncertainty; if we run the montecarlo with all the other variables changing in each simulation but only had the lowest range for the price (3 EUR), then the market size would be close to 100 k EUR less than the base case; conversely, if we take the highest point of our assumption (6 EUR), the market size would be close to 600 kEUR. So, if you are considering opening up an arepas restaurant, this would be the first variable you would want to reduce the uncertainty of to get a more narrow range of potential revenue.

And voila! There you have your potential market size and the most important assumptions. Remember you can find the python code on this link to do it yourself :)

--

--