FINCAD Analytics Suite 2009 for Excel and FINCAD Analytics Suite 2009 for Developers have introduced new **Monte Carlo** techniques including: the ability to price various instruments using quasi-Monte Carlo simulation as well as standard **Monte Carlo simulation**; simulation of various non-lognormal processes; and the use of multi-threaded computations to make the simulations faster.

## Overview

The Monte Carlo method was given its name by physicists working on the atom bomb at Los Alamos during the second World War [5]. The random sampling involved in the procedure brought to mind the casino in Monaco, and hence the name. Today, Monte Carlo methods are widely used in many areas of mathematics and science. In finance, they are used to value derivatives by simulating the random changes in the underlying assets upon which those derivatives are based, and to analyse various notions and measures of risk. The first time such a simulation was used in a derivative valuation was in 1977 [2] and, since then, the techniques have become widespread. Indeed, for many derivatives, Monte Carlo simulation is the *only* feasible valuation technique.

Consider a European call option on a single underlying asset *S _{t}*, maturing at time

*T*, and take the risk-free interest rate to be zero. Then the fair value of the option is just the time

*t*expectation of the time T payoff:

It is precisely such integrals that the Monte Carlo method is used to evaluate. Since S* _{T}* is a random variable, one can use Monte Carlo simulation to draw values of S

*from the relevant distribution*

_{T}*p*(S

*). For each value of S*

_{T}*, one calculates the option payoff and then takes the average payoff as the fair value. Each draw can be thought of as a*

_{T}*path*and if

*N*such paths are used, we have

The non-trivial step is to ensure that the S* _{T}^{(i)}* are drawn from the correct distribution, according to the choice of model that one makes. In practice, one uses a random number generator that generates numbers drawn from a uniform distribution and, if necessary, converts those to numbers drawn from a standard normal distribution to use in the simulation.

Of course, Equation (2) is only an approximation, although the more paths that one uses (the larger the value of N) the better the approximation will be. The variance, or error, in a Monte Carlo simulation is O(1/√*N*), so to increase the precision by a factor of 2, four times the number of paths must be used. More precisely, the discrepancy - a formal measure of the uniformity of points - of the Monte Carlo simulation is O(1/√*N*). To reduce the discrepancy, quasi-Monte Carlo simulation can be used instead. This involves the use of so-called low discrepancy sequences which have discrepancy of O(1/*N*), a popular one being the Sobol sequence [6, 7]. Such a sequence of numbers covers the sampling space more uniformly. To increase the precision by a factor of 2 in a quasi-Monte Carlo simulation, only two times the number of paths are needed.

It is easy to generalize these ideas to include derivatives with non-European exercise features, with path dependent payoffs, and which depend on a basket of multiple underlying asset prices. Indeed, Monte Carlo simulation is really the only way to value derivatives with path dependent payoffs [1], since, contrary to other numerical methods, it steps forward through time rather than backwards. For such a path dependent structure, one simply discretizes the time axis, and computes intermediate values of S* _{T}* at each relevant time point. An example is an Asian option, the value of which is based on the average underlying asset price at maturity, where the average is computed by sampling the asset price at some given set of time points.

In addition to path dependence, the Monte Carlo method is necessary to price derivatives based on a large basket of underlying asset prices. It avoids the so-called "curse of dimensionality": If there are *m* underlying assets in the basket, Monte Carlo simulation with *N* paths only ever involves Ο(*N*) computations, as opposed to the Ο(*m ^{N}*) needed for PDE- or tree-based methods.

## Lognormal and non-Lognormal Models

All derivative contracts depend on the value of some underlying at a set of time points *t _{i}*, for

*i*= 1,…,

*n*. An option, for example, depends on the prices S

*of an underlying asset. Since the forward price is a martingale, it is easier to work with that rather than the spot price itself. Denoting the*

_{t}*t*forward price at time ti by F

_{j}*(*

_{j}*t*), we thus need to compute the values

_{i}given the initial forward prices F* _{i}*(

*t*

_{0}). These initial values may be available directly from the market (e.g., in the case of forward par swap rates) or may need to be computed from market data (e.g., in the case of an equity).

Given some derivative, we must decide which model to use to describe the evolution of the underlying asset price - that is, we must choose a stochastic process which is most suited to the case at hand. Since one cannot always solve the chosen stochastic differential equation (SDE), discretization methods must sometimes be used. In that case, one discretizes using one of various techniques (the Euler discretization is often used [3]), and this process introduces discretization errors over and above the usual sources of error in a Monte Carlo simulation.

In FINCAD Analytics Suite 2009 for Excel and FINCAD Analytics Suite 2009 for Developers, we introduced functions which can simulate the following stochastic processes: lognormal, shifted lognormal (or displaced diffusion), normal, and constant elasticity of variance (CEV). None of these needs such discretization methods. The first three processes can be solved exactly and the known probability transition function for the CEV process can be used to simulate the forward prices.

## Pseudo- and quasi-random number generators

At the heart of a Monte Carlo simulation is a random number generator, which generates a set of numbers drawn from a uniform distribution. For the CEV process, that is all one needs. For the other processes listed above, however, one uses the uniformly distributed numbers to generate a set of numbers drawn from a standard normal distribution through the use of the inverse cumulative standard normal function.

Of course in practice, a sequence of numbers which looks sufficiently "random" is generated in a nevertheless deterministic fashion. Strictly speaking, the random number generator is actually a pseudo-random number generator, and there are a variety of such generators used in the literature. In FINCAD Analytics Suite 2009 for Excel and FINCAD Analytics Suite 2009 for Developers, we have implemented the Mersenne-Twister random number generator, as in [4]. The generator takes a seed, from which it computes the starting value of the sequence, and this seed is in turn set internally to be different upon each calculation. However, we also allow Monte Carlo calculations to be performed with a fixed seed, so the same sequence of numbers can be used for each calculation.

In FINCAD Analytics Suite 2009 for Excel and FINCAD Analytics Suite 2009 for Developers, we have also implemented *quasi*-Monte Carlo simulation using the Sobol sequence [6, 7]. Quasi-Monte Carlo, as it name suggests, is even less "random" than Monte Carlo. In fact, a quasi-Monte Carlo simulation makes use of a set of numbers drawn from the uniform distribution which do not even have the appearance of randomness, in such a way as to "cover the space" most uniformly. Mathematically, this means a set of numbers with a low discrepancy: a low-discrepancy sequence. The Sobol sequence is one such sequence of numbers. In one dimension, this set of numbers is given by

which obviously covers the space in a uniform manner.

The advantage of using quasi-Monte Carlo, as opposed to Monte Carlo, simulation is that one needs fewer paths with quasi-Monte Carlo to get the same degree of precision. So if one runs both simulations with the same number of paths, the quasi-Monte Carlo result will be the more precise. For that reason, the FINCAD functions listed below use the Sobol sequence to perform a quasi-Monte Carlo simulation by default.

## Precision of the Monte Carlo simulation

These functions also output a "precision" statistic in addition to the fair value of the derivative and/or the sensitivities to the user-input data. In the case of pseudo-random number generation, i.e. if the Mersenne-Twister random number generator is used, this number is 1.96 times the standard deviation of the fair value, and thus corresponds to the 95% confidence interval. In other words, the "true" theoretical fair value is expected to lie within the range

95% of the time. In practice, the result of the Monte Carlo simulation will change every time the functions are calculated, but the long-run average will be equal to the theoretical value. The variability of the results will depend on how many paths are used - the more paths, the less the variability.

On the other hand, in the case of a quasi-Monte Carlo simulation, i.e. if the Sobol sequence of numbers is used, the precision statistic has a somewhat different interpretation. For details, see [3], but heuristically the precision statistic given by the FINCAD functions is indeed a measure of how precise the computed value is: the more paths that are used, the greater will be the precision. In a quasi-Monte Carlo simulation, the result does not change upon re-calculation, and is still not exactly equal to the theoretical value. However, the more paths that are used, the closer the result will be.

Note also that if the number of paths in a quasi-Monte Carlo simulation is equal to 2* ^{p}* -1 for any power

*p*, then the mean of the Sobol sequence will be exactly 0.5. If any other number of paths is used, the results of the simulation will show a bias.

## Multi-threaded calculations

The functions listed below are also enabled for multi-threaded calculations. The number of threads to use in the calculation can be entered as an optional input in the table of Monte Carlo calculation parameters.

In practice, this means that the user of a multi-core computer can increase the number of threads in order to make the calculation faster. The more threads that are used, the faster the calculation will be. However, the user should use no more threads than the computer has CPU cores, else the simulations will begin to take longer than they should. If using a quad-core machine, for example, specifying four threads will ensure that the Monte Carlo simulation is as fast as possible. However, the user should be aware that the more threads used for the Monte Carlo simulation, the less responsive their computer will be for other tasks.

## Summary

The following list of functions have been introduced in FINCAD Analytics Suite 2009 for Excel and FINCAD Analytics Suite 2009 for Developers. They have the ability to price, and calculate the risk statistics of a range of single- and multi-asset options with Monte Carlo techniques: single-asset Asian and Cliquet options, and multi-asset Altiplano options. Both standard Monte Carlo simulation and quasi-Monte Carlo simulation can be used, and the calculations can be made faster using multiple threads.

## Functions

Instrument Type | Functions |

Asian options | aaAsian_LV_p aaAsian_LV_fs_p |

Cliquet options | aaCliquet_LV_p aaCliquet_LV_fs_p |

Mountain Range products | aaAltiplano aaAltiplano_fs |

Suffix / Prefix | Description |

_LV | allows for local volatility (non-lognormal) underlying price processe |

_fs | allows for user-defined "freestyle" fixing dates |

## References

[1] Some simple path dependent options can be priced using PDE-based methods, but it is not particularly straightforward to do so.

[2]Boyle, P. (1977), Options: A Monte Carlo approach,* Journal of Financial Economics*, pp. 323-338.

[3]Glassermann, Paul (2004), Monte Carlo Methods in Financial Engineering, Springer-Verlag New York.

[4] Matsumoto, M. and Nishimura, T. (1998), Mersenne-Twister: a 623-dimensionally equidistributed uniform pseudo-random number generator,* ACM Transactions on Modeling and Computer Simulation (TOMACS)*, 8: pp. 3-30.

[5] Metropolis, N. (1987), *The Beginning of the Monte Carlo Method*, Technical report, Los Alamos National Laboratory, http://library.lanl.gov/cgi-bin/getfile?00326866.pdf.

[6] Sobol', I. M. (1967), On the Distribution of Points in a Cube and Approximate Evaluation of Integrals, *USSR Computational Mathematics and Mathematical Physics*, 7: pp. 86-112.

[7] Sobol', I. M. (1976), Uniformly distributed sequences with an additional uniform property, *USSR Computational Mathematics and Mathematical Physics*, 16: pp. 236-242.

For more information or a customized demonstration of the software, contact a FINCAD Representative.