nag_jumpdiff_merton_price (s30jac) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_jumpdiff_merton_price (s30jac)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_jumpdiff_merton_price (s30jac) computes the European option price using the Merton jump-diffusion model.

2  Specification

#include <nag.h>
#include <nags.h>
void  nag_jumpdiff_merton_price (Nag_OrderType order, Nag_CallPut option, Integer m, Integer n, const double x[], double s, const double t[], double sigma, double r, double lambda, double jvol, double p[], NagError *fail)

3  Description

nag_jumpdiff_merton_price (s30jac) uses Merton's jump-diffusion model (Merton (1976)) to compute the price of a European option. This assumes that the asset price is described by a Brownian motion with drift, as in the Black–Scholes–Merton case, together with a compound Poisson process to model the jumps. The corresponding stochastic differential equation is,
dS S = α-λk dt + σ^ dWt + dqt .
Here α is the instantaneous expected return on the asset price, S; σ^2 is the instantaneous variance of the return when the Poisson event does not occur; dWt is a standard Brownian motion; qt is the independent Poisson process and k=EY-1 where Y-1 is the random variable change in the stock price if the Poisson event occurs and E is the expectation operator over the random variable Y.
This leads to the following price for a European option (see Haug (2007))
Pcall = j=0 e-λT λTj j! Cj S, X, T, r, σj ,
where T is the time to expiry; X is the strike price; r is the annual risk-free interest rate; CjS,X,T,r,σj is the Black–Scholes–Merton option pricing formula for a European call (see nag_bsm_price (s30aac)).
σj = z2 + δ2 j T , z2 = σ2 - λ δ2 , δ2 = γ σ2 λ ,
where σ is the total volatility including jumps; λ is the expected number of jumps given as an average per year; γ is the proportion of the total volatility due to jumps.
The value of a put is obtained by substituting the Black–Scholes–Merton put price for Cj S, X, T, r, σj .

4  References

Haug E G (2007) The Complete Guide to Option Pricing Formulas (2nd Edition) McGraw-Hill
Merton R C (1976) Option pricing when underlying stock returns are discontinuous Journal of Financial Economics 3 125–144

5  Arguments

1:     orderNag_OrderTypeInput
On entry: the order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by order=Nag_RowMajor. See Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint: order=Nag_RowMajor or Nag_ColMajor.
2:     optionNag_CallPutInput
On entry: determines whether the option is a call or a put.
option=Nag_Call
A call. The holder has a right to buy.
option=Nag_Put
A put. The holder has a right to sell.
Constraint: option=Nag_Call or Nag_Put.
3:     mIntegerInput
On entry: the number of strike prices to be used.
Constraint: m1.
4:     nIntegerInput
On entry: the number of times to expiry to be used.
Constraint: n1.
5:     x[m]const doubleInput
On entry: x[i-1] must contain Xi, the ith strike price, for i=1,2,,m.
Constraint: x[i-1]z ​ and ​ x[i-1] 1 / z , where z = nag_real_safe_small_number , the safe range parameter, for i=1,2,,m.
6:     sdoubleInput
On entry: S, the price of the underlying asset.
Constraint: sz ​ and ​s1.0/z, where z=nag_real_safe_small_number, the safe range parameter.
7:     t[n]const doubleInput
On entry: t[i-1] must contain Ti, the ith time, in years, to expiry, for i=1,2,,n.
Constraint: t[i-1]z, where z = nag_real_safe_small_number , the safe range parameter, for i=1,2,,n.
8:     sigmadoubleInput
On entry: σ, the annual total volatility, including jumps.
Constraint: sigma>0.0.
9:     rdoubleInput
On entry: r, the annual risk-free interest rate, continuously compounded. Note that a rate of 5% should be entered as 0.05.
Constraint: r0.0.
10:   lambdadoubleInput
On entry: λ, the number of expected jumps per year.
Constraint: lambda>0.0.
11:   jvoldoubleInput
On entry: the proportion of the total volatility associated with jumps.
Constraint: 0.0jvol<1.0.
12:   p[m×n]doubleOutput
Note: the i,jth element of the matrix P is stored in
  • p[j-1×m+i-1] when order=Nag_ColMajor;
  • p[i-1×n+j-1] when order=Nag_RowMajor.
On exit: the m×n array p contains the computed option prices.
13:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INT
On entry, m=value.
Constraint: m1.
On entry, n=value.
Constraint: n1.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_REAL
On entry, jvol=value.
Constraint: jvol0.0 and jvol < 1.0.
On entry, lambda=value.
Constraint: lambda>0.0.
On entry, r=value.
Constraint: r0.0.
On entry, s=value.
Constraint: svalue and svalue.
On entry, sigma=value.
Constraint: sigma>0.0.
NE_REAL_ARRAY
On entry, t[value]=value.
Constraint: t[i]value.
On entry, x[value]=value.
Constraint: x[i]value and x[i]value.

7  Accuracy

The accuracy of the output is dependent on the accuracy of the cumulative Normal distribution function, Φ, occurring in Cj. This is evaluated using a rational Chebyshev expansion, chosen so that the maximum relative error in the expansion is of the order of the machine precision (see nag_cumul_normal (s15abc) and nag_erfc (s15adc)). An accuracy close to machine precision can generally be expected.

8  Further Comments

None.

9  Example

This example computes the price of a European call with jumps. The time to expiry is 3 months, the stock price is 45 and the strike price is 55. The number of jumps per year is 3 and the percentage of the total volatility due to jumps is 40%. The risk-free interest rate is 10% per year and the total volatility is 25% per year.

9.1  Program Text

Program Text (s30jace.c)

9.2  Program Data

Program Data (s30jace.d)

9.3  Program Results

Program Results (s30jace.r)


nag_jumpdiff_merton_price (s30jac) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012