Which Numerical Method should I Use and When?
The three main numerical methods in common use are Monte Carlo, finite difference and numerical quadrature. (I'm including the binomial method as just a simplistic version of finite differences.) Monte Carlo is great for complex path dependency and high dimensionality, and for problems which cannot easily be written in differential equation form. Finite difference is best for low dimensions and contracts with decision features such as early exercise, ones which have a differential equation formulation. Numerical quadrature is for when you can write the option value as a multiple integral.
You want to price a fixed-income contract using the BGM model. Which numerical method should you use? BGM is geared up for solution by simulation, so you would use a Monte Carlo simulation.
You want to price an option which is paid for in instalments, and you can stop paying and lose the option at any time if you think it s not worth keeping up the payments. This may be one for finite-difference methods since it has a decision feature.
You want to price a European, non-path-dependent contract on a basket of equities. This may be recast as a multiple integral and so you would use a quadrature method.
Finite-difference methods are designed for finding numerical solutions of differential equations. Since we work with a mesh, not unlike the binomial method, we will find the contract value at all points is stock price-time space. In quantitative finance that differential equation is almost always of diffusion or parabolic type. The only real difference between the partial differential equations are the following:
• Number of dimensions
• Functional form of coefficients
• Boundary/final conditions
• Decision features
• Linear or non-linear.
Number of dimensions
Is the contract an option on a single underlying or many? Is there any strong path dependence in the payoff? Answers to these questions will determine the number of dimensions in the problem. At the very least we will have two dimensions: S or r, and t. Finite-difference methods cope extremely well with smaller number of dimensions, up to four, say. Above that they get rather time consuming.
Functional form of coefficients
The main difference between an equity option problem and a single-factor interest rate option problem is in the functional form of the drift rate and the volatility. These appear in the governing partial differential equations as coefficients. The standard model for equities is the lognormal model, but there are many more 'standard' models in fixed income. Does this matter? No, not if you are solving the equations numerically, only if you are trying to find a closed-form solution in which case the simpler the coefficients the more likely you are to find a closed-form solution.
In a numerical scheme the difference between a call and a put is in the final condition. You tell the finite-difference scheme how to start. And in finite-difference schemes in finance we start at expiration and work towards the present. Boundary conditions are where we tell the scheme about things like knock-out barriers.
Early exercise, instalment premiums, chooser features, are all examples of embedded decisions seen in exotic contracts. Coping with these numerically is quite straightforward using finite-difference methods, making these numerical techniques the natural ones for such contracts. The difference between a European and an American option is about three lines of code in a finite-difference program and less than a minute s coding.
Linear or non-linear
Almost all quant finance models are linear, so that you can solve for a portfolio of options by solving each contract at a time and adding. Some more modern models are nonlinear. Linear or nonlinear doesn't make that much difference when you are solving by finite-difference methods. So choosing this method gives you a lot of flexibility in the type of model you can use.
Finite differences are very good at coping with low dimensions, and are the method of choice if you have a contract with embedded decisions. They are excellent for non-linear differential equations.
The time taken to price an option and calculate the sensitivities to underlying(s) and time using the explicit finite-difference method will be
where M is the number of different options in the portfolio and we want an accuracy of e,and d is the number of dimensions other than time. So if we have a non-path-dependent option on a single underlying then d = 1. Note that we may need one piece of code per option, hence M in the above.
Programme of study
If you are new to finite-difference methods and you really want to study them, here is a suggested programme of study.
• Explicit method/European calls, puts and binaries: To get
started you should learn the explicit method as applied to the Black-Scholes equation for a European option. This is very easy to program and you won't make many mistakes.
• Explicit method/American calls, puts and binaries: Not much harder is the application of the explicit method to American options.
• Crank-Nicolson/European calls, puts and binaries: Once you've got the explicit method under your belt you should learn the Crank-Nicolson implicit method. This is harder to program, but you will get a better accuracy.
• Crank-Nicolson/American calls, puts and binaries: There's not much more effort involved in pricing American-style options than in the pricing of European-style options.
• Explicit method/path-dependent options: By now you'll be quite sophisticated and it's time to price a path-dependent contract. Start with an Asian option with discrete sampling, and then try a continuously-sampled Asian. Finally, try your hand at lookbacks.
• Interest rate products: Repeat the above programme for non-path-dependent and then path-dependent interest rate products. First price caps and floors and then go on to the index amortizing rate swap.
• Two-factor explicit: To get started on two-factor problems price a convertible bond using an explicit method, with both the stock and the spot interest rate being stochastic.
• Two-factor implicit: The final stage is to implement the implicit two-factor method as applied to the convertible bond.