Pricing Asian options in the Heston model

  • The directory sites/default/files/tmp/drutex-8ca452ebbf8599fd2e993e238581a32e-1 has been created.
  • The directory sites/default/files/tmp/drutex-8ca452ebbf8599fd2e993e238581a32e-2 has been created.
  • The directory sites/default/files/tmp/drutex-8ca452ebbf8599fd2e993e238581a32e-3 has been created.

By Jacques Printems

Introduction

The following stochastic volatility model for the stock price dynamic in an incomplete market was introduced by Heston in 1993 [1]. Under a Risk-Neutral probability $ \mathbb{P} $, it writes:

$$
\left \{
\begin{array}{rclll}
dS_t & = & S_t \, ( r dt + \sqrt{v_t} \, dW_t^1), &  S_0 = s_0, & \\
&&& &\\
dv_t & = & k(a-v_t) + \vartheta \sqrt{v_t} \, dW_t^2, & v_0>0, & d\langle W^1, W^2 \rangle_t = \rho \, dt
\end{array}
\right.
$$

where $ \rho \in [-1,1] $ and where $ \theta, a, k >0 $ are such that $ \theta^2/(4ka) < 1 $. Here $ W^1 $ and $ W^2 $ are two standard Brownian motions under the probability measure $ \mathbb{P} $. Consider the Asian Call option of maturity $ T $ and strike $ K > 0 $ for which there is no explicit formula:

$$
e^{-rT} {\mathbb{E}} \, \left ( \frac 1T \int_0^T S_s ds - K \right )_+. 
$$

As a first step, we project $ W^1 $ onto $ W^2 $, so that $ W^1 = \rho W^2 + \sqrt{1-\rho^2} \widetilde{W^1} $ where $  \widetilde{W^1} $ is a standard Brownian motion independent of $ W^2 $ under the probability measure $ \mathbb{P} $. Then $ S_t $ writes

TeX Embedding failed!

where $ \bar v_t = \frac 1t \int_0^t v_s ds $.

Consider now $ X = \{ X^1, \dots, X^{N_1} \} $ and $ Y = \{ Y^1, \dots, Y^{N_2} \} $ two functional quantizers of the Brownian motion.

TeX Embedding failed!

where tabs $ (x_n^i) $ andt $ (y_n^j) $ are available here.

For $ i \in \{ 1,\cdots, N_1 \} $ and $ j \in \{1,\cdots,N_2\} $, we numerically solve the following ordinary differential equations.

TeX Embedding failed!

(Here, we used a Runge Kutta IV method.) The option price is now approximated by

$$
e^{-rT} \sum_{i,j} \left ( \frac 1T \int_0^T s_{i,j}(t) dt-K \right)_+ \mathbb{P}\left(W^2 \in C_i(X) \right) \times {\mathbb{P}}(\widetilde{W}^1\in C_j(Y)).
$$

Numerical test

Here, we propose a method to compute the Asian call option price based on the functional quantization of the Brownian motion as described in article [2] (section 8).

Here $ (N_1,N_2) $ et $ (N_3,N_4) $ are the sizes of optimal functional quantizers of the standard Brownian motion ($ N_1 $ "points", i.e. paths, for $ W^2 $ et $ N_2 $ for $ \widetilde{W}^1 $). Parameter $ n $ stands for the number of time-steps used to solve the ordinary differential equation written above. (We used a fourth order Runge Kutta scheme). Each grid couple yields a price approximation. The final result is a Romberg extrapolation between both prices, based on a $ O(1/\log(N_1 N_2)) $ rate of convergence for the quadrature error.

The following program was developed with the C programming language, and interfaced with Ruby. You can contact the authors for the source code.

Spot $ (x) $
Constant interest rate $ (r) $
Constant dividend rate
Initial variance $ (v_0) $
Mean reversion $ (k) $
Asymptotic variance $ (a) $
Volatility of volatility $ (\theta) $
Correlation $ (\rho) $
Maturity $ (T) $
Strike $ (K) $
$ N_1 $
$ N_2 $
$ N_3 $
$ N_4 $
$ n $
This can take up to one minute of computation before displaying the results.

The site team would like to thank David Delavennat (CNRS ingeneer at LAMA-UMR 8050 Univ. MLV - Paris 12 from 2003 to 2007) for his advices on the Ruby interface.


References

  1. Steven L. Heston, "A closed-form solution for options with stochastic volatility with an application to bond and currency options", The Review of Financial Studies , vol. 6, issue 2, pp. 327 - 343, 1993.
  2. Gilles Pag├Ęs, and Jacques Printems, "Functional quantization for numerics with an application to option pricing", Monte Carlo Methods and Appl., vol. 11, no. 11, pp. 407-446, 2005.