nag_asian_geom_greeks (s30sbc) computes the Asian geometric continuous average-rate option price together with its sensitivities (Greeks).
| #include <nag.h> |
| #include <nags.h> |
| void |
nag_asian_geom_greeks (Nag_OrderType order,
Nag_CallPut option,
Integer m,
Integer n,
const double x[],
double s,
const double t[],
double sigma,
double r,
double b,
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) |
|
nag_asian_geom_greeks (s30sbc) computes the price of an Asian geometric continuous average-rate 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. The annual volatility,
, risk-free rate,
, and cost of carry,
, are constants (see
Kemna and Vorst (1990)). For a given strike price,
, the price of a call option with underlying price,
, and time to expiry,
, is
and the corresponding put option price is
where
and
with
is the cumulative Normal distribution function,
Kemna A and Vorst A (1990) A pricing method for options based on average asset values Journal of Banking and Finance 14 113–129
- 1:
order – Nag_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
. See
Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint:
or Nag_ColMajor.
- 2:
option – Nag_CallPutInput
On entry: determines whether the option is a call or a put.
- A call. The holder has a right to buy.
- A put. The holder has a right to sell.
Constraint:
or .
- 3:
m – IntegerInput
On entry:
the number of strike prices to be used.
Constraint:
.
- 4:
n – IntegerInput
On entry:
the number of times to expiry to be used.
Constraint:
.
- 5:
x[m] – const doubleInput
On entry: must contain
, the
th strike price, for .
Constraint:
, where
, the safe range parameter, for .
- 6:
s – doubleInput
On entry: , the price of the underlying asset.
Constraint:
, where , the safe range parameter.
- 7:
t[n] – const doubleInput
On entry: must contain
, the
th time, in years, to expiry, for .
Constraint:
, where
, the safe range parameter, for .
- 8:
sigma – doubleInput
On entry: , the volatility of the underlying asset. Note that a rate of 15% should be entered as 0.15.
Constraint:
.
- 9:
r – doubleInput
On entry: , the annual risk-free interest rate, continuously compounded. Note that a rate of 5% should be entered as 0.05.
Constraint:
.
- 10:
b – doubleInput
On entry: , the annual cost of carry rate. Note that a rate of 8% should be entered as .
- 11:
p[] – doubleOutput
Note: the
th element of the matrix
is stored in
- when ;
- when .
On exit: the
array
p contains the computed option prices.
- 12:
delta[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
delta contains the sensitivity,
, of the option price to change in the price of the underlying asset.
- 13:
gamma[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
gamma contains the sensitivity,
, of
delta to change in the price of the underlying asset.
- 14:
vega[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
vega contains the sensitivity,
, of the option price to change in the volatility of the underlying asset.
- 15:
theta[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
theta contains the sensitivity,
, of the option price to change in the time to expiry of the option.
- 16:
rho[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
rho contains the sensitivity,
, of the option price to change in the annual risk-free interest rate.
- 17:
crho[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
crho containing the sensitivity,
, of the option price to change in the annual cost of carry rate,
.
- 18:
vanna[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
vanna contains the sensitivity,
, of
vega to change in the price of the underlying asset or, equivalently, the sensitivity of
delta to change in the volatility of the asset price.
- 19:
charm[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
charm contains the sensitivity,
, of
delta to change in the time to expiry of the option.
- 20:
speed[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
speed contains the sensitivity,
, of
gamma to change in the price of the underlying asset.
- 21:
colour[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
colour contains the sensitivity,
, of
gamma to change in the time to expiry of the option.
- 22:
zomma[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
zomma contains the sensitivity,
, of
gamma to change in the volatility of the underlying asset.
- 23:
vomma[] – doubleOutput
Note: the
th element of the matrix is stored in
- when ;
- when .
On exit: the
array
vomma contains the sensitivity,
, of
vega to change in the volatility of the underlying asset.
- 24:
fail – NagError *Input/Output
-
The NAG error argument (see
Section 3.6 in the Essential Introduction).
- NE_ALLOC_FAIL
Dynamic memory allocation failed.
- NE_BAD_PARAM
On entry, argument had an illegal value.
- NE_INT
On entry, .
Constraint: .
On entry, .
Constraint: .
- 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, .
Constraint: .
On entry, .
Constraint: and .
On entry, .
Constraint: .
- NE_REAL_ARRAY
On entry, .
Constraint: .
On entry, .
Constraint: and .
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.
None.
This example computes the price of an Asian geometric continuous average-rate call with a time to expiry of months, a stock price of and a strike price of . The risk-free interest rate is per year, the cost of carry is and the volatility is per year.