nag_binary_con_greeks (s30cbc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

NAG Library Function Document

nag_binary_con_greeks (s30cbc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_binary_con_greeks (s30cbc) computes the price of a binary or digital cash-or-nothing option together with its sensitivities (Greeks).

2  Specification

#include <nag.h>
#include <nags.h>
void  nag_binary_con_greeks (Nag_OrderType order, Nag_CallPut option, Integer m, Integer n, const double x[], double s, double k, const double t[], double sigma, double r, double q, double p[], double delta[], double gamma[], double vega[], double theta[], double rho[], double crho[], double vanna[], double charm[], double speed[], double colour[], double zomma[], double vomma[], NagError *fail)

3  Description

nag_binary_con_greeks (s30cbc) computes the price of a binary or digital cash-or-nothing option, together with the Greeks or sensitivities, which are the partial derivatives of the option price with respect to certain of the other input parameters. This option pays a fixed amount, K, at expiration if the option is in-the-money (see Section 2.4 in the s Chapter Introduction). For a strike price, X, underlying asset price, S, and time to expiry, T, the payoff is therefore K, if S>X for a call or S<X for a put. Nothing is paid out when this condition is not met.
The price of a call with volatility, σ, risk-free interest rate, r, and annualised dividend yield, q, is
Pcall = K e-rT Φd2
and for a put,
Pput = K e-rT Φ-d2
where Φ is the cumulative Normal distribution function,
Φx = 1 2π - x exp -y2/2 dy ,
and
d2 = ln S/X + r-q- σ2 / 2 T σT .
The option price Pij=PX=Xi,T=Tj is computed for each strike price in a set Xi, i=1,2,,m, and for each expiry time in a set Tj, j=1,2,,n.

4  References

Reiner E and Rubinstein M (1991) Unscrambling the binary code Risk 4

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:     kdoubleInput
On entry: the amount, K, to be paid at expiration if the option is in-the-money, i.e., if s>x[i-1] when option=Nag_Call, or if s<x[i-1] when option=Nag_Put, for i=1,2,,m.
Constraint: k0.0.
8:     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.
9:     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.
10:   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.
11:   qdoubleInput
On entry: q, the annual continuous yield rate. Note that a rate of 8% should be entered as 0.08.
Constraint: q0.0.
12:   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 strike price xi at expiry tj for i=1,2,,m and j=1,2,,n.
13:   delta[m×n]doubleOutput
Note: the i,jth element of the matrix is stored in
  • delta[j-1×m+i-1] when order=Nag_ColMajor;
  • delta[i-1×n+j-1] when order=Nag_RowMajor.
On exit: the m×n array delta contains the sensitivity, PS, of the option price to change in the price of the underlying asset.
14:   gamma[m×n]doubleOutput
Note: the i,jth element of the matrix is stored in
  • gamma[j-1×m+i-1] when order=Nag_ColMajor;
  • gamma[i-1×n+j-1] when order=Nag_RowMajor.
On exit: the m×n array gamma contains the sensitivity, 2PS2, of delta to change in the price of the underlying asset.
15:   vega[m×n]doubleOutput
Note: where VEGAi,j appears in this document, it refers to the array element
  • vega[j-1×m+i-1] when order=Nag_ColMajor;
  • vega[i-1×n+j-1] when order=Nag_RowMajor.
On exit: VEGAi,j, contains the first-order Greek measuring the sensitivity of the option price Pij to change in the volatility of the underlying asset, i.e., Pij σ , for i=1,2,,m and j=1,2,,n.
16:   theta[m×n]doubleOutput
Note: where THETAi,j appears in this document, it refers to the array element
  • theta[j-1×m+i-1] when order=Nag_ColMajor;
  • theta[i-1×n+j-1] when order=Nag_RowMajor.
On exit: THETAi,j, contains the first-order Greek measuring the sensitivity of the option price Pij to change in time, i.e., - Pij T , for i=1,2,,m and j=1,2,,n, where b=r-q.
17:   rho[m×n]doubleOutput
Note: where RHOi,j appears in this document, it refers to the array element
  • rho[j-1×m+i-1] when order=Nag_ColMajor;
  • rho[i-1×n+j-1] when order=Nag_RowMajor.
On exit: RHOi,j, contains the first-order Greek measuring the sensitivity of the option price Pij to change in the annual risk-free interest rate, i.e., - Pij r , for i=1,2,,m and j=1,2,,n.
18:   crho[m×n]doubleOutput
Note: where CRHOi,j appears in this document, it refers to the array element
  • crho[j-1×m+i-1] when order=Nag_ColMajor;
  • crho[i-1×n+j-1] when order=Nag_RowMajor.
On exit: CRHOi,j, contains the first-order Greek measuring the sensitivity of the option price Pij to change in the annual cost of carry rate, i.e., - Pij b , for i=1,2,,m and j=1,2,,n, where b=r-q.
19:   vanna[m×n]doubleOutput
Note: where VANNAi,j appears in this document, it refers to the array element
  • vanna[j-1×m+i-1] when order=Nag_ColMajor;
  • vanna[i-1×n+j-1] when order=Nag_RowMajor.
On exit: VANNAi,j, contains the second-order Greek measuring the sensitivity of the first-order Greek Δij to change in the volatility of the asset price, i.e., - Δij T = - 2 Pij Sσ , for i=1,2,,m and j=1,2,,n.
20:   charm[m×n]doubleOutput
Note: where CHARMi,j appears in this document, it refers to the array element
  • charm[j-1×m+i-1] when order=Nag_ColMajor;
  • charm[i-1×n+j-1] when order=Nag_RowMajor.
On exit: CHARMi,j, contains the second-order Greek measuring the sensitivity of the first-order Greek Δij to change in the time, i.e., - Δij T = - 2 Pij ST , for i=1,2,,m and j=1,2,,n.
21:   speed[m×n]doubleOutput
Note: where SPEEDi,j appears in this document, it refers to the array element
  • speed[j-1×m+i-1] when order=Nag_ColMajor;
  • speed[i-1×n+j-1] when order=Nag_RowMajor.
On exit: SPEEDi,j, contains the third-order Greek measuring the sensitivity of the second-order Greek Γij to change in the price of the underlying asset, i.e., - Γij S = - 3 Pij S3 , for i=1,2,,m and j=1,2,,n.
22:   colour[m×n]doubleOutput
Note: where COLOURi,j appears in this document, it refers to the array element
  • colour[j-1×m+i-1] when order=Nag_ColMajor;
  • colour[i-1×n+j-1] when order=Nag_RowMajor.
On exit: COLOURi,j, contains the third-order Greek measuring the sensitivity of the second-order Greek Γij to change in the time, i.e., - Γij T = - 3 Pij ST , for i=1,2,,m and j=1,2,,n.
23:   zomma[m×n]doubleOutput
Note: where ZOMMAi,j appears in this document, it refers to the array element
  • zomma[j-1×m+i-1] when order=Nag_ColMajor;
  • zomma[i-1×n+j-1] when order=Nag_RowMajor.
On exit: ZOMMAi,j, contains the third-order Greek measuring the sensitivity of the second-order Greek Γij to change in the volatility of the underlying asset, i.e., - Γij σ = - 3 Pij S2σ , for i=1,2,,m and j=1,2,,n.
24:   vomma[m×n]doubleOutput
Note: where VOMMAi,j appears in this document, it refers to the array element
  • vomma[j-1×m+i-1] when order=Nag_ColMajor;
  • vomma[i-1×n+j-1] when order=Nag_RowMajor.
On exit: VOMMAi,j, contains the second-order Greek measuring the sensitivity of the first-order Greek Δij to change in the volatility of the underlying asset, i.e., - Δij σ = - 2 Pij σ2 , for i=1,2,,m and j=1,2,,n.
25:   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, k=value.
Constraint: k0.0.
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, 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, Φ. 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_binary_con_greeks (s30cbc) 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 cash-or-nothing call with a time to expiry of 0.75 years, a stock price of 110 and a strike price of 87. The risk-free interest rate is 5% per year, there is an annual dividend return of 4% and the volatility is 35% per year. If the option is in-the-money at expiration, i.e., if S>X, the payoff is 5.

10.1  Program Text

Program Text (s30cbce.c)

10.2  Program Data

Program Data (s30cbce.d)

10.3  Program Results

Program Results (s30cbce.r)


nag_binary_con_greeks (s30cbc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

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