Advanced Finite Difference Method for Quantitative Finance: Theory, Applications and Computation - (code FDM)
The goal of this course is to apply partial differential equations (PDE) and the Finite Difference Method (FDM) to computational finance. In particular, we apply FDM to option pricing, optimization and calibration for one-factor and multi-factor models. A special feature of the course is that we discuss all relevant aspects such as model formulation, choosing the most appropriate PDE and FDM for the problem at hand as well as designing efficient algorithms in C++11 and C# 5.0. We deal with the most popular, modern and efficient finite difference methods to accurately price one-factor and multi-factor options. We treat PDE models for both equity and fixed income applications.
This is a hands-on course with a good mix of theory and practice. The percentage theory/practice is approximate 80%/20%. The focus of the exercises is to develop practical skills in order to assemble the discrete system of equations as input to a C++ framework or pricing library, for example.
Subjects Covered
- Solving a range of one-factor and two-factor option pricing problems.
- Linear and nonlinear PDEs in computational finance.
- Comprehensive and modern finite difference methods for computational finance.
- Volatility modelling and calibration.
- C++ software framework to test schemes.
What you learn in this Course
- The full trajectory from financial model through PDE, FDM, algorithm design and code framework.
- Linear and nonlinear PDEs for option pricing.
- State-of-the-art and modern methods such as ADE, splitting, Methods of Lines (MOL).
- Knowing the choices and which ones are best (accurate, fast) in a given situation.
Course contents updated November 2014
Course Contents
Part 1 Financial and Mathematical Models
In this section we discuss the financial and mathematical PDE models that we approximate using the finite difference methods in later sections. We examine the properties of the solution in order to provide insights into the problem at hand. We discuss a number of innovative methods such as the Fichera theory and domain transformation that we shall use in examples in computational finance.
PDE Categories
- One-factor, multi-factor
- Linear, semilinear, non-linear
- Domain (bounded, semi-infinite, infinite)
- Time-dependent and time-independent PDEs
- Conservative and non-conservative PDE forms
- Reduction to first-order systems
Special Kinds of PDE
- Parabolic and elliptic PDE
- First-order hyperbolic PDE
- ‘Asian-style’ PDE
- Ordinary differential equations (ODEs)
Describing PDEs
- PDE coefficients
- Boundary conditions (Dirichlet, Neumann, none, linearity)
- Initial conditions
- Well-posedness and continuity
- Energy inequality; existence and uniqueness of solution
Special Properties
- Convection dominance
- Discontinuous initial conditions
- Domain truncation and domain transformation
- Mixed derivatives
- The Fichera theory: Feller conditions
Part 2 Finite Difference Method: Fundamental Techniques
In this section we discuss one-factor PDEs in detail and their approximation by popular and well-known finite difference schemes. We apply these schemes to general convection-diffusion-reaction equations and general boundary conditions and in particular we show their application to the one-factor Black Scholes PDE.
We also discuss the numerical analysis of the finite difference method in which we give necessary and sufficient conditions for a finite difference scheme to be stable and to converge to the solution of the PDE that it is approximating. Some new and powerful methods that we discuss are the Method of Lines (MOL), exponential fitting and the Alternating Direction Explicit (ADE) method.
The results in this section form the basis for more advanced multi-factor applications in later sections.
Attention Points
- Continuous to discrete space: meshes and mesh generation
- Approximation of partial derivatives
- One-step and multistep time marching schemes
- Full discretisaton
- Semi-discretisation and Method of Lines (MOL)
Some Well-known Schemes
- Explicit and implicit Euler
- Crank Nicolson
- Richardson extrapolation
- Alternating Direction Explicit (ADE)
- Monotone schemes and M-matrices
Auxiliary Numerical Methods
- Solution of linear and nonlinear systems
- Interpolation and smoothing
- Numerical integration
- Optimisation (Levenberg-Marquardt, Differential Evolution)
Analysis of FDM
- Stability, consistency and convergence
- Conditional and unconditional stability
- Von Neumann stability analysis
- Maximum principle
- Order of accuracy and rate of convergence
Example: One-Factor Black Scholes PDE, I
- Domain truncation versus domain transformation
- Call and put options: boundary conditions
- Payoff functions; handling discontinuities
- Crank Nicolson and Rannacher methods
- Using exponential fitting (first-order, fourth order versions)
Example: One-Factor Black Scholes PDE, II
- Avoiding oscillations: fully implicit method and extrapolation
- Critique of the Crank Nicolson method
- ADE method for the Black Scholes PDE
- More general cases and Fichera boundary conditions
- Approximating the Greeks (sensitivities)
Part 3 Advanced (Nonlinear) Models
In this section we introduce a number of linear and nonlinear PDEs and finite difference schemes. In particular, we consider free and moving boundary values problems that describe an option’s early exercise features. Since this is a nonlinear problem we see that the methods from Part 2 are not applicable. We then resort to nonlinear solvers and transformations to make the problem more tractable.
We discuss the Method of Lines (MOL) in detail. This method reduces a PDE to a system of ordinary differential equations (ODEs) by discretizing the underlying space variables only. The resulting ODE system can then be handed to a solver such as Mathematica’s NDSolve or the Boost C++ library odeint. These libraries are suitable for stiff and non-stiff systems of nonlinear ODEs in general.
Early Exercise Features
- Free and moving boundaries
- Formulations (fixed domain, front tracking)
- Variational inequalities and PSOR
- Brennan-Schwartz method
The Method of Lines (MOL) Overview
- Semi-discretisation
- Vertical MOL and horizontal MOL(Rotke)
- Example: one-dimensional heat equation
- Advantages of MOL
- Application areas
MOL in Detail
- Stiff and non-stiff ODEs
- Linear and nonlinear systems
- Incorporating non-Dirichlet boundary conditions into MOL
- Adaptive and non-adaptive ODE solvers
MOL PDE Examples
- Black Scholes
- Cox Ingersoll Ross (CIR)
- Uncertain Volatility Model (UVM)
- CEV model
- MOL in Mathematica and Boost C++ odeint
ADE for one-Factor Problems
- Background and motivation
- Saul’yev, Barakat-Clark and Larkin variants
- ADE for convection terms
- Conditional consistency; stability
- Boundary conditions
Other Differential Equations
- Fokker-Planck
- First-time exit PDE
- Riccati ODE
Kinds of Boundary Conditions
- Dirichlet, Neumann, Robin
- Linearity
- PDE on boundary (hyperbolic, parabolic)
- Fichera conditions
Part 4 Two-Factor Models
In this section we discuss several popular finite difference methods to approximate the solutions of the PDEs describing two-factor option pricing. We discuss the two main contenders, namely Alternating Direction Implicit (ADI) method and the method of Fractional Steps (“Soviet Splitting”) which originated in the United States and the former Soviet Union in the 1960’s, respectively. We apply then to several PDEs in computational finance. Of particular importance is the problem of approximating the mixed derivatives in the PDE to ensure that the resulting scheme is monotone and does not lead to spurious oscillations.
We also discuss MOL and ADE for linear and nonlinear PDEs and we compare them with ADI and splitting methods.
Contenders
- Alternating Direction Implicit (ADI)
- Splitting (Fractional Steps method)
- ADE in two dimensions
- Hopscotch method
- Other methods
The ADI Method
- Using ADI for two-factor PDE
- Mixed derivatives using Craig-Sneyd and Hout/Welfert
- Test cases: basket options and Heston model
- Generalising the ADI method
The Operator Splitting Method
- Yanenko, Marchuk and Strang splittings
- Explicit and implicit splitting
- Handling mixed derivatives and boundary conditions
- Splitting and predictor-corrector methods
- Marchuk 1-2-2-1 model
The ADE Method
- Origins and background; how it differs from ADI and splitting
- Motivating ADE: from heat pde to convection-diffusion and mixed derivatives
- One-sided and centred variants of ADE
- ADE in 3 and more factors
- ADE and how it is parallelised
Comparing ADI, Splitting and ADE Methods
- How they handle mixed derivatives
- Boundary conditions
- Accuracy and robustness of the schemes
- Improving accuracy
- Can the scheme be parallelized?
Mixed Derivatives
- Modeling correlation: extreme cases
- Craig-Sneyd, Verwer, Hout_Welfert, Yanenko
- Stress-testing mixed derivatives
- Test case: compare ADI, splitting and ADE for Heston model
Test Cases
- Basket options
- Heston model
- Asian options
- Anchoring model (Wilmott, Lewis and Duffy)
Modelling Jumps
- Merton’s and Kou models
- Partial Integro-Differential Equations (PIDE)
- Implicit-explicit Euler method
- Implicit-explicit Runge-Kutta method
Part 5 Volatility Modelling
In this section we discuss the important topic of volatility modelling. The Black Scholes option pricing formula assumes that the volatility is known and constant, an assumption that does not hold in real life. For this reason we introduce a number of methods to calibrate volatility to market data. For example, we shall use the finite difference method to calibrate local volatility.
We also discuss uncertain volatility models (UVM) and stochastic volatility (in the Heston model).
Categories of Volatility
- Historical
- Implied
- Local
- Actual
Continuous Time Calibration
- The local volatility model
- Calibrating the local volatility function
- The Dupire forward equation
- Calibration using Dupire
Discrete Time Calibration
- Discretisation of the initial boundary value problem
- Calibration
- Deriving the call surface
- Deriving the local volatility surface
- Comparing Crank Nicolson and ADE
Uncertain Volatility Models (UVM)
- The model of Avellaneda, Levy and Paras
- One-factor models
- Two-factor models
- Other uncertain parameters (interest rate, dividends, correlation)
Stochastic Volatility
- The Heston model
- Local and implied volatility in the Heston model
- The Heston_Nando model
- Jumps
Optimisation Methods
- Differential Evolution
- Levenberg-Marquardt
- Simulate Annealing and Sequential Quadratic Programming (SQP)
- Local and global optimisation
Part 6 From FDM to Code: Software Framework in a Nutshell
In this part of the course we employ C++ 11 and associated libraries to create efficient and flexible software frameworks for a range of linear and nonlinear one-factor PDEs that model equity and interest-rate derivatives. In particular, the emphasis is on creating maintainable and efficient code that be customised to a range of derivatives pricing problems.
To achieve the goals, we make use of multi-paradigm design patterns, policy-based design and numerical libraries whenever possible. The pattern can be used in other areas, such as Monte Carlo simulation and lattice models, for example.
The PDE Model (Convection-diffusion-reaction)
- Choice of PDE model (linear/nonlinear, conservative/nonconservative)
- Domain truncation versus domain transformation
- Kinds of boundary conditions
- Payoff
C++ Classes for PDE
- Using the Bridge patterns to model a PDE
- Design choice: namespace, classic GOF, policy-based
- Performance issues (subtype polymorphism, CRTP, C++ 11 wrappers)
- Nested PDEs and two-factor PDEs
The FDM Model
- Classification of FDM schemes
- Full discretization versus semi-discretisation (Method of Lines)
- Separation of concerns and loose-coupling
- Matrix libraries (home-grown, Boost uBLAS, Eigen, MTL)
- Nonlinear FDM schemes
Some Specific Schemes
- Crank-Nicolson, fully implicit
- Alternating Direction Explicit (ADE)
- Richardson Extrapolation
- Method of Lines (MOL) and Boost odeint
C++ Classes for FDM
- Class hierarchy: what is the best approach?
- Subtype polymorphism versus C++ 11 function wrappers
- System assembly and Builder pattern
- Check: tight cohesion and loose coupling
- Sanity check: Single Responsibility Principle (SRP)
Design Patterns for FDM
- Template method pattern
- FDM and Adapter pattern
- Strategies and plug-in methods
- Notification patterns
- Deciding which matrix library to use
Application Configuration
- PDE Framework as an object network
- Configuring the network: Builder<std::tuple<>> pattern
- The Mediator pattern as essential component
Postprocessing of Computed Results
- A framework to test accuracy and efficiency
- Using algorithms and data structures from STL and Boost
- Testing finite difference methods as candidate solutions
- Multithreading and parallelization designs patterns
- Using the Layers pattern to provide portability
Prerequisites
We assume basic knowledge of differential equations and finite difference theory. The models and examples in the course are taken from computational finance and we thus assume that these are also known.
Some skills in arithmetical and algebraic manipulation are seen as a useful asset, especially when assembling systems of discrete equations.
Who should attend?This course has been developed so that you can use the theory to solve existing problems as well as applying the knowledge to the pricing of new financial instruments. In particular, the course is for professionals with a strong mathematical background:
- Financial engineers who design new pricing models
- Analysts and quants
- Other professionals who whis to understand and apply advanced numerical methods to derivatives pricing
Duration, price, date, locations and registration
Course duration: |
4 days. |
Dates and location: |
(click on dates to print registration form) |
Date(s) |
Location |
Price |
Language |
Feb 14 - Feb 17 2017
|
London
(United Kingdom) |
€ 3300.-- ex. VAT
€ 3993.-- inc. 21% VAT |
English |
Click on one of the dates above to register.
This course can also be organised at your company's premises. Call Datasim (+31-72-2204802) or for more information about the possibilities.
|