Chapter 2: Comparing New and Extant Numerical and Analytical Methods of
4. Numerical Results
4.1. Experiment design
We conduct a series of numerical experiments to investigate the efficiency and accuracy of various methods used to price an Asian option. Numerical inversion algorithms include Abate and Whitt’s (1995) Euler method (Euler); Abate and Whitt’s (1995) Post-Widder method (PW); Shaw’s (1998) Bromwich integration; Abate and Valkó’s (2004) Gaver-Wynn-Rho algorithm (GWR); Abate and Valkó’s (2004) fixed Talbot method (FT); Abate and Whitt’s (2006) unified Gaver-Stehfest algorithm (UniG); Abate and Whitt’s (2006) unified Euler algorithm (UniE); Abate and Whitt’s (2006) unified Talbot algorithm (UniT); Abate, Choudhury and Whitt’s (1996) Laguerre method. Other methods cover Linetsky’s (2004) spectral series expansion, Schröder’s (2008) constructive complex analysis, Ve e ’s (2002) PDE method, Shaw’s (2002) asymptotic expansion, Turnbull and Wakeman’s (1991) approximation, Milevsky and Posner’s (1998) reciprocal gamma approximation, and Monte Carlo simulation with control variate. We compute the prices of nineteen cases of Asian options in Table 4.1 with every method and draw comparisons between different methods. The results can also be compared with the literature. For example, all cases are used in Craddock, Heath and Platen (2000) which has become the benchmark in Asian option pricing experimental design, and first seven cases are used in Fu, Madan and Wang (1999) and Linetsky (2004). We write Mathematica code for all methods except Shaw’s asymptotic expansion (where we use Shaw’s own code).
Table 4.1. Nineteen cases of Asian options with normalized parameters Case S K r Σ T Ν h q 1 1.9 2 0.05 0.5 1 -0.6 0.0625 0.06579 2 2 2 0.05 0.5 1 -0.6 0.0625 0.0625 3 2.1 2 0.05 0.5 1 -0.6 0.0625 0.05952 4 2 2 0.02 0.1 1 3. 0.0025 0.0025 5 2 2 0.18 0.3 1 3. 0.0225 0.0225 6 2 2 0.0125 0.25 2 -0.6 0.03125 0.03125 7 2 2 0.05 0.5 2 -0.6 0.125 0.125 8 17 16 0.06 0.3 2.5 0.3333 0.05625 0.05294 9 17 17 0.06 0.3 2.5 0.3333 0.05625 0.05625 10 17 18 0.06 0.3 2.5 0.3333 0.05625 0.05956 11 53 51 0.07 0.4 1.5 -0.125 0.06 0.05774 12 53 53 0.07 0.4 1.5 -0.125 0.06 0.06 13 53 55 0.07 0.4 1.5 -0.125 0.06 0.06226 14 29 27 0.11 0.15 0.5 8.7778 0.00281 0.00262 15 29 29 0.11 0.15 0.5 8.7778 0.00281 0.00281 16 29 31 0.11 0.15 0.5 8.7778 0.00281 0.00301 17 100 90 0.09 0.3 1 1. 0.0225 0.02025 18 100 100 0.09 0.3 1 1. 0.0225 0.0225 19 100 110 0.09 0.3 1 1. 0.0225 0.02475
Ν is normalized interest rate, h is normalized maturity and q is normalized strike price.
By experiment, there are three types of errors that could affect the accuracy of the algorithm, i.e., truncation error, discretization error, and round-off error. In practical implementation, in order to achieve desired accuracy we have to control these errors. The truncation error and discretization error are associated with the parameter settings of the algorithm. While, the round-off error is determined by the computing precision, also called working precision (wp).
As we know, Mathematica has a arbitrary-precision, or multi-precision, computing environment. However, an approximate real number you enter is treated by Mathematica as either a machine-precision number (also called machine number) or an arbitrary-precision number depending on the number of the digits. For example, A number such as 1.2 will be treated as a machine number since the digits entered are less than the typical value of machine precision, i.e. 16. Machine number always contain the same number of digits, and has no information on their precision. While, arbitrary-precision number contains any number of digits, and maintain information on their precision. Notice that precision is defined as the effective number of digits. Given the fact that an approximate real number always has some uncertainty in its value, the precision of a number can indicate the number of digits that has no uncertainty.
To implement in the multi-precision computing environment, we must change machine numbers to arbitrary-precision numbers. This can be done easily by using built-in Mathematica function SetPrecision@expr, pD. For example, SetPrecision[1.2, 20]sets number 1.2 to have precision of 20 digits. The secret of making multi-precision computing successful is to ensure all input arguments have been set to be arbitrary-precision numbers or combination of exact numbers and arbitrary-precision numbers. Thus, the final result yielded will have information on its precision. We can then be confident that there is no round-off error within the precision. But, If we input even one machine-precision argument, the result will lose information on its precision, and we will have no idea about the size of round-off error. 62 | Chapter 2. Comparing New and Extant Numerical and Analytical Methods of Asian Option Pricing
To implement in the multi-precision computing environment, we must change machine numbers to arbitrary-precision numbers. This can be done easily by using built-in Mathematica function SetPrecision@expr, pD. For example, SetPrecision[1.2, 20]sets number 1.2 to have precision of 20 digits. The secret of making multi-precision computing successful is to ensure all input arguments have been set to be arbitrary-precision numbers or combination of exact numbers and arbitrary-precision numbers. Thus, the final result yielded will have information on its precision. We can then be confident that there is no round-off error within the precision. But, If we input even one machine-precision argument, the result will lose information on its precision, and we will have no idea about the size of round-off error.
By increasing the truncation size in numerical inversion, the accuracy improves consistently provided that the discretization error and round-off error are smaller than the truncation error. Fu, Madan and Wang (1999) find that numerical inversion encounters difficulties for low volatility and short maturity. Furthermore, Craddock, Heath and Platen (2000) point out that numerical difficulties arise when the value of q is small. Hence we regard cases of q>0.02 as normal cases and cases of 0.0025£q<0.02
as difficult cases. For normal cases, we seek an accuracy of 5, 10, and 15 significant digits respectively. For difficult cases, we aim for an accuracy of 5 significant digits. All of the tolerances we use should be acceptable to those who actually trade Asian options.