a coefficient of12 is quite loose and is certainly far exceeded by an arithmetic and a geometric Asian option. If the correlation coefficient approaches unity, we have SEA−G=SEA−SEG.
Using the same arithmetic Asian call option as in the last subsection, a simple Monte Carlo run with 1 million shots gives a price of 12.994±0.021. The analytical value of the corresponding geometric call option is 11.764. Using this as the control variate gives a pricing for the arithmetic call of 13.007±0.011 with a mere 25,000 simulation run.
This enormous gain in efficiency is of course due to the very close correlation between arith- metic and geometric prices. Unfortunately, there are no other situations which work remotely as well.
(iv)Greeks:So far in this chapter we have referred to pricing options. Equally important for the management of an options book is the calculation of a good estimate for the Greek parameters.
The obvious way of doing this is by finite differencing: for example, if ¯f(S0) is the discounted payoff of an option when the stock price isS0, then a single simulation of the delta is written
(S0)= f(S0+δS0)− f(S0−δS0) 2δS0
An unbiased estimate ¯(S0) of the delta is then equal to the average of the individual simu- lation results(S0). The critical thing to remember is that the same path (i.e. set of random numbers)mustbe used to generate the f(S0+δS0) as are used for the f(S0−δS0); otherwise convergence will be too slow to be of any use. Clearly, this method can be used to estimate any of the Greek parameters.
10.5 QUASI-RANDOM NUMBERS
(i) Look up on a cloudless night and you see the sky randomly covered with stars: but are they random? Poetic star-gazers over the ages have pointed out the fantastic designs they trace. Less sensitive souls see the patterns less clearly but everyone is agreed that the random stars clump together, leaving some parts of the sky emptier than others (deep comments from astrophysicists or other religious groups are not helpful at this point, thank you).
And so it is with random numbers. If you see pairs of standard uniform random numbers plotted on a plane with the numbers ranging from 0 to 1 on both axes, it is certain that you could “improve” on the random distribution by rearranging some points. So why use random numbers at all? When we did a simulation run withNshots to price a European call, we started withN standard uniform random numbers. Why not start withNnumbers equally spaced between 0 and 1. From these we could generateNnumbers which lie on the normal curve, bunched together around the peak of the curve. Wouldn’t this give a more accurate answer than a random simulation? The answer is of course a resounding “yes: it would be much more efficient”.
The reason is that we have effectively gone back to performing a numerical integration of a one-dimensional integral. Furthermore, we have introduced a refinement of the discussion in Section 10.1(iii): having chosen the uniform numbers to be equally spaced, the resultant normal numbers must be in positions such that they describe strips of equal area under the standard normal curve. In other words, the numerical integration procedure which is equivalent to this calculation effectively uses a trapezium rule with strips of equal area. The effect of this is to make the strips thinner (and hence the integration procedure more accurate) in the area
135
10 Monte Carlo
of highest probability. This was previously cited as one of the reasons for the high efficiency of the Monte Carlo method.
If we try to extend this to higher dimensions we unfortunately fall under the “curse of dimensionality” once again, e.g. a 10-dimensional grid with only 10 points on each axis gives us 10 billion calculations to do. Furthermore, setting up a grid is not very flexible because of the large jumps in numbers of calculations if we change the numbers of points on each axis: if we are dealing with a 10-dimensional problem, the number of calculation points with two, three or four nodes per axis are 210,310and 410, respectively, and i.e. 1000, 60,000 and 1,000,000.
What do we do if we want to run a number of simulations lying between these numbers?
We know that we cannot use equally spaced points along each axis for anything but very low numbers of dimensions – maybe four at most. So let us ask a more modest question: can we devise a procedure for packing ann-dimensional space withNpoints more efficiently than with random numbers, so that the simulation results converge more quickly thanN−1/2asN increases?
(ii) The answer to the last question is of course “yes”; these are the so-calledlow discrepancy sequencesorquasi-random numbers. There are several different schemas for manufacturing these sequences known by the names of their inventors: Halton, Faur´e, Sobol. The easiest sequence to produce are the simple Halton numbers which we shall use for illustration.
Figure 10.3 compares 1000 points plotted in two dimensions for a random distribution and for Halton numbers (bases 2 and 3). There is not much poetry in the Halton diagram but it is obvious that the area is more uniformly covered with dots than the random diagram.
Random Numbers Halton Numbers
Figure 10.3 1000 Pairs of numbers
The speed of convergence of these methods is approximately∝c(d)(lnN)d/N, wheredis the number of dimensions;C(d) is different for the different methods of producing the low discrepancy sequences.
A lot of jargon and methodology is carried over from true Monte Carlo analysis, but it should be remembered that these are fixed numbers. We have already seen that a computer cannot produce random numbers; but the pseudo-random numbers which we use instead really have the properties of random numbers, e.g. we can start taking our sample from anywhere in a sequence. Quasi-random numbers on the other hand have a definite beginning and order (although no end). By definition they are always the same.
(iii)Halton Sequence:Like standard uniform random numbers, these numbers have value 0 to 1.
Each one dimensional sequence of Halton numbers is manufactured from an integer baseb
10.5 QUASI-RANDOM NUMBERS
which can be chosen arbitrarily; normally prime numbers are chosen. The numbers are the following sequence:
[0], 1 b, 2
b, . . . ,b−1 b ; 1
b2 +
all numbers in previous row
, 2
b2 +
all numbers in previous row
, . . . ,b−1 b2 +
all numbers in previous row
; 1
b3 +
all numbers in previous row
, 2
b3 +
all numbers in previous row
, . . . ,b−1 b3 +
all numbers in previous row
; ...
The first zero, which is inserted in order to express the subsequent numbers simply, is not part of the Halton sequence and is discarded once the sequence has been set up. We take the example ofb=3, when the sequence becomes
[0], 1 3, 2
3; 1
9+0, 1 9+1
3, 1 9+2
3; 2 9 +0, 2
9 +1 3, 2
9+2 3; 1
27+0, 1 27+1
3, 1 27+2
3; 1 27+1
9+0, 1 27 +1
9 +1 3, 1
27+1 9 +2
3; etc.
Clearly, this is just a way of placing points along a line in an orderly way so that each new point is placed as far away from existing points as possible. On the whole, it is better to use low prime bases rather than high ones.
(iv)Alternative Representation of Halton Numbers:The last subsection explained how the interval 0 to 1 is progressively filled with Halton numbers after the base has been chosen. There is an alternative way of describing this, which is less intuitively appealing but easier to code:
r
Take the sequence of integers starting with 1 and write these to base b.r
Flip these basebintegers over the decimal point as shown in Table 10.3.r
This flipped over fraction, when re-expressed to base 10 is a Halton number.Table 10.3 Manufacture of Halton numbers to base 3 Flipped Integer10
Integer10 Integer3 Flipped Integer3 =Halton Number
1 13 0.13 2
3
2 23 0.23 2
3
3 103 0.013 1
9
4 113 0.113 1
9 +13
5 123 0.213 19 +13
6 203 0.023 2
9
(v)Higher Dimensional Halton Numbers:Consider a two-dimensional problem needing pairs of
“random numbers”. If these are true or pseudo-random numbers, we can just pair up random 137
10 Monte Carlo
numbers as they come out of the random number generator; but with quasi-random numbers we need to be much more careful. These are deterministic numbers which are built up logically, so undesirable patterns can build up if they are used carelessly: at its most basic, if we take pairs of numbers as they come out of two generators using the same base, all the points will lie along a straight line in theX−Y plane, e.g. (13,13), (23,23), (19,19). The simplest procedure is therefore to use a different prime number for the base of the Halton numbers used for each dimension, e.g. for a three-dimensional sequence, we use the three Halton sequencesH2,H3, H5, taking the numbersH2(1),H3(1),H5(1) for the first point, and so on up toH2(n),H3(n), H5(n) for thenth point. This simple procedure is adequate for a few dimensions but beyond about six, convergence is not so good.
(vi)Faur´e Sequence:A slightly more complex method than in the last subparagraph is due to Faur´e, and is also made from the Halton numbers; it leads to a sequence which is much more efficient.
Halton numbers to a single base are manipulated to obtain the coordinates of multidimensional points, using the following procedure and example:
1. Suppose we wish to obtain a sequence ofd-dimensional points; our example will taked =3 2. Decide on a baserwhich is a prime number withr ≥d. For our example we chooser =3.
3. We saw above that the Halton numbers are based on ascending integers. Any integernto basermay be written
n=hmrm+ · · · +h2r2+h1r1+h0r0 For example
2210 =2×32+1×31+1×30=2113
The Halton number is now written
Hr(n)=h0r−1+h1r−2+h2r−3+ · · · In our example
H3(22)= 1 3 +1
9 + 2 27 =14
27
4. The Faur´e sequences describe points inddimensions, i.e. aredparallel streams of numbers.
The first stream of numbers is just the simple Halton sequence forn=1,2,3, . . . .The other streams of numbers are obtained by calculating coefficients analogous to thehiin the last equation. We write the Faur´e number from streamkaskr(n), and use the following definitions:
1r(n)=Hr(n); ai1=hi
ThesFaur´e numbers corresponding to the integernare then
1r(n)=a01r−1+a11r−2+a21r−3+ · · · = Hr(n) 2r(n)=a02r−1+a21r−2+a22r−3+ · · ·
...
dr(n)=ad0r−1+a1dr−2+a2dr−3+ · · ·