nag_lookback_fls_price (s30bac) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

NAG Library Function Document

nag_lookback_fls_price (s30bac)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_lookback_fls_price (s30bac) computes the price of a floating-strike lookback option.

2  Specification

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

3  Description

nag_lookback_fls_price (s30bac) computes the price of a floating-strike lookback call or put option. A call option of this type confers the right to buy the underlying asset at the lowest price, Smin, observed during the lifetime of the contract. A put option gives the holder the right to sell the underlying asset at the maximum price, Smax, observed during the lifetime of the contract. Thus, at expiry, the payoff for a call option is S-Smin, and for a put, Smax-S.
For a given minimum value the price of a floating-strike lookback call with underlying asset price, S, and time to expiry, T, is
Pcall = S e-qT Φa1 - Smin e-rT Φa2 + S e-rT   σ2 2b S Smin -2b / σ2 Φ -a1 + 2b σ T -e bT Φ -a1 ,
where b=r-q0. The volatility, σ, risk-free interest rate, r, and annualised dividend yield, q, are constants. When r=q, the option price is given by
Pcall = S e-qT Φ a1 - Smin e-rT Φ a2 + S e-rT σT ϕ a1 + a1 Φ a1 -1 .
The corresponding put price is (for b0),
Pput = Smax e-rT Φ -a2 - S e-qT Φ -a1 + S e-rT   σ2 2b - S Smax -2b / σ2 Φ a1 - 2b σ T + ebT Φ a1 .
When r=q,
Pput = Smax e-rT Φ -a2 - S e-qT Φ -a1 + S e-rT σT ϕa1 + a1 Φa1 .
In the above, Φ denotes the cumulative Normal distribution function,
Φx = - x ϕy dy
where ϕ denotes the standard Normal probability density function
ϕy = 12π exp -y2/2
and
a1 = ln S / Sm + b + σ2 / 2 T σT a2=a1-σT
where Sm is taken to be the minimum price attained by the underlying asset, Smin, for a call and the maximum price, Smax, for a put.
The option price Pij=PX=Xi,T=Tj is computed for each minimum or maximum observed price in a set Smin i  or Smax i , i=1,2,,m, and for each expiry time in a set Tj, j=1,2,,n.

4  References

Goldman B M, Sosin H B and Gatto M A (1979) Path dependent options: buy at the low, sell at the high Journal of Finance 34 1111–1127

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 minimum or maximum prices to be used.
Constraint: m1.
4:     nIntegerInput
On entry: the number of times to expiry to be used.
Constraint: n1.
5:     sm[m]const doubleInput
On entry: sm[i-1] must contain Smin i , the ith minimum observed price of the underlying asset when option=Nag_Call, or Smax i , the maximum observed price when option=Nag_Put, for i=1,2,,m.
Constraints:
  • sm[i-1]z ​ and ​ sm[i-1] 1 / z , where z = nag_real_safe_small_number , the safe range parameter, for i=1,2,,m;
  • if option=Nag_Call, sm[i-1]S, for i=1,2,,m;
  • if option=Nag_Put, sm[i-1]S, 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 volatility of the underlying asset. Note that a rate of 15% should be entered as 0.15.
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:   qdoubleInput
On entry: q, the annual continuous yield rate. Note that a rate of 8% should be entered as 0.08.
Constraint: q0.0.
11:   p[m×n]doubleOutput
Note: where Pi,j appears in this document, it refers to the array element
  • p[j-1×m+i-1] when order=Nag_ColMajor;
  • p[i-1×n+j-1] when order=Nag_RowMajor.
On exit: Pi,j contains Pij, the option price evaluated for the minimum or maximum observed price Smin i  or Smax i  at expiry tj for i=1,2,,m and j=1,2,,n.
12:   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, q=value.
Constraint: q0.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, sm[value]=value.
Constraint: valuesm[i]value for all i.
On entry, t[value]=value.
Constraint: t[i]value for all i.
On entry with a call option, sm[value]=value.
Constraint: for call options, sm[i]value for all i.
On entry with a put option, sm[value]=value.
Constraint: for put options, sm[i]value for all i.

7  Accuracy

The accuracy of the output is dependent on the accuracy of the cumulative Normal distribution function, Φ. 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  Parallelism and Performance

nag_lookback_fls_price (s30bac) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
Please consult the Users' Note for your implementation for any additional implementation-specific information.

9  Further Comments

None.

10  Example

This example computes the price of a floating-strike lookback call with a time to expiry of 6 months and a stock price of 120. The minimum price observed so far is 100. The risk-free interest rate is 10% per year and the volatility is 30% per year with an annual dividend return of 6%.

10.1  Program Text

Program Text (s30bace.c)

10.2  Program Data

Program Data (s30bace.d)

10.3  Program Results

Program Results (s30bace.r)


nag_lookback_fls_price (s30bac) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

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