Let's say that you buy into the usefulness of Monte Carlo methods and you want to use them. For the purpose of this discussion, let us also assume:
- You aren't working on something that already has a highly specific Monte Carlo tool available. These do exist, for various specific problems in engineering, chemistry and physics: ray tracing, molecular modeling, physics and others.
- You aren't going to build a new, highly specific tool, completely from scratch for this purpose.
hat are your options? As I see it, you can go one of two ways. Both have their problems.
Microsoft Excel Add-Ins
A lot of Monte Carlo tools for financial and business analysis seem to be offered as Excel plugins. This makes a degree of sense: virtually everyone in the business world has a copy of Excel, and most of them have at least some idea of how it works. You've got a ready made market for your product. However, these tools are also limited by Excel itself.
- Their user interfaces are limited by Excel's interface concepts. Everyone who has ever tried to analyze a serious problem with Excel has probably chafed at its limitations. Your multidimensional world has to be flattened to a single grid; composing complex formulas is a pain; your main avenue for extension is Visual Basic.
- You're tied to a desktop computing paradigm. You might not think of this as a big limitation, but you're never going to use it in a web browser, or on a Mac, or on an iOS/Android tablet. You're not going to be able to share an interactive copy of your work.
- Almost all of them are expensive. The ones that aren't are not very featureful.
- Lack of scale: these add-ins aren't going to access large data sets, work with complicated models, or scale horizontally across multiple CPUs or a cluster of machines.
In short, while there are aspects of the graphical user interfaces for these tools that are good, I doubt that they would be very useful for larger models. In particular, they aren't going to be much use for dynamic simulations (where the randomized behavior of the model at one point in time influences the behavior at a later point.)
Math & Statistics Packages
You may have used -- or at least heard about -- these programs if you've taken certain college courses (statistics, econometrics, engineering, survey research, etc) in the last ~50 years. These are in order of first development, from earliest to most recent. Most of them started out in universities and were later commercialized.
- SPSS, first developed in the early 1960s. Widely used in the social sciences. I used this (via the command line on a now-hopelessly-obsolete HP-UX machine with a PA-RISC microprocessor) when I was at Northwestern. Company was acquired by IBM in 2009 for $1.2 billion.
- SAS, also first developed in the 1960s. I never used it, but I knew people that did, and they preferred it.
- MATLAB was developed in the 1970s and tends to be used by people doing work in the "hard" sciences. There are also open-source versions of MATLAB such as GNU Octave.
- Maple was developed at the University of Waterloo in the early 1980s.
- Stata originated in 1985, still maintained. I've never actually seen a running copy.
- Mathematica, first developed in 1988 for the NeXTSTEP operating system, which later became the underpinnings for MacOS X.
- GNU R, an open-source clone of the S programming language developed at Bell Labs in the mid-1970s. R itself was developed in the 1990s.
SPSS, SAS, Stata and R are general-purpose statistical packages; R is more of a programming language in its own right. MATLAB, Maple and Mathematica are more properly described as numeric or algebraic "computing environments," which are more oriented to general mathematics, as opposed to just statistics.
What, you may ask, is the point? Perhaps you've never heard of most of these, or if you have, perhaps you've never used them extensively.
Actually, that is my point. These are good, solid packages for doing statistical computing. They are specialized for math, but not for simulation modeling. In order to use them effectively, you've got to learn a new programming language, new conventions for how to set up your data files, etc. Not to mention, you need to know how the math works, because in my experience, these packages are fairly hard on the uninitiated. And did I mention that most of them (except the open-source projects) require per-user licenses that range anywhere from $1,500 annually and up, unless you are a college student? They do. If you want to run these packages on a cluster of computers to improve the speed, those costs go up significantly.
You can do a lot with any of these tools, if you've got the money to buy them and/or the time to learn how to use them. But I think it might be time to consider what we can do with a tool that:
- Uses a general-purpose programming language that is easy to learn, and already widely known;
- Is geared specifically toward dynamic probabilistic simulations, and is thereby simpler to use; and
- Is designed from the start to be distributed, with computations and storage taking place "in the cloud" and only a user interface running locally on your computer or mobile device.