PDF version (NAG web site
, 64-bit version, 64-bit version)
NAG Toolbox: nag_specfun_opt_binary_con_greeks (s30cb)
Purpose
nag_specfun_opt_binary_con_greeks (s30cb) computes the price of a binary or digital cash-or-nothing option together with its sensitivities (Greeks).
Syntax
[
p,
delta,
gamma,
vega,
theta,
rho,
crho,
vanna,
charm,
speed,
colour,
zomma,
vomma,
ifail] = s30cb(
calput,
x,
s,
k,
t,
sigma,
r,
q, 'm',
m, 'n',
n)
[
p,
delta,
gamma,
vega,
theta,
rho,
crho,
vanna,
charm,
speed,
colour,
zomma,
vomma,
ifail] = nag_specfun_opt_binary_con_greeks(
calput,
x,
s,
k,
t,
sigma,
r,
q, 'm',
m, 'n',
n)
Description
nag_specfun_opt_binary_con_greeks (s30cb) 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,
, at expiration if the option is in-the-money (see
Option Pricing Routines in the S Chapter Introduction). For a strike price,
, underlying asset price,
, and time to expiry,
, the payoff is therefore
, if
for a call or
for a put. Nothing is paid out when this condition is not met.
The price of a call with volatility,
, risk-free interest rate,
, and annualised dividend yield,
, is
and for a put,
where
is the cumulative Normal distribution function,
and
The option price is computed for each strike price in a set , , and for each expiry time in a set , .
References
Reiner E and Rubinstein M (1991) Unscrambling the binary code Risk 4
Parameters
Compulsory Input Parameters
- 1:
– string (length ≥ 1)
-
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 .
- 2:
– double array
-
must contain
, the th strike price, for .
Constraint:
, where , the safe range parameter, for .
- 3:
– double scalar
-
, the price of the underlying asset.
Constraint:
, where , the safe range parameter.
- 4:
– double scalar
-
The amount, , to be paid at expiration if the option is in-the-money, i.e., if
when , or if when , for .
Constraint:
.
- 5:
– double array
-
must contain
, the th time, in years, to expiry, for .
Constraint:
, where , the safe range parameter, for .
- 6:
– double scalar
-
, the volatility of the underlying asset. Note that a rate of 15% should be entered as 0.15.
Constraint:
.
- 7:
– double scalar
-
, the annual risk-free interest rate, continuously compounded. Note that a rate of 5% should be entered as 0.05.
Constraint:
.
- 8:
– double scalar
-
, the annual continuous yield rate. Note that a rate of 8% should be entered as 0.08.
Constraint:
.
Optional Input Parameters
- 1:
– int64int32nag_int scalar
-
Default:
the dimension of the array
x.
The number of strike prices to be used.
Constraint:
.
- 2:
– int64int32nag_int scalar
-
Default:
the dimension of the array
t.
The number of times to expiry to be used.
Constraint:
.
Output Parameters
- 1:
– double array
-
.
contains , the option price evaluated for the strike price at expiry for and .
- 2:
– double array
-
.
The leading
part of the array
delta contains the sensitivity,
, of the option price to change in the price of the underlying asset.
- 3:
– double array
-
.
The leading
part of the array
gamma contains the sensitivity,
, of
delta to change in the price of the underlying asset.
- 4:
– double array
-
.
, contains the first-order Greek measuring the sensitivity of the option price to change in the volatility of the underlying asset, i.e., , for and .
- 5:
– double array
-
.
, contains the first-order Greek measuring the sensitivity of the option price to change in time, i.e., , for and , where .
- 6:
– double array
-
.
, contains the first-order Greek measuring the sensitivity of the option price to change in the annual risk-free interest rate, i.e., , for and .
- 7:
– double array
-
.
, contains the first-order Greek measuring the sensitivity of the option price to change in the annual cost of carry rate, i.e., , for and , where .
- 8:
– double array
-
.
, contains the second-order Greek measuring the sensitivity of the first-order Greek to change in the volatility of the asset price, i.e., , for and .
- 9:
– double array
-
.
, contains the second-order Greek measuring the sensitivity of the first-order Greek to change in the time, i.e., , for and .
- 10:
– double array
-
.
, contains the third-order Greek measuring the sensitivity of the second-order Greek to change in the price of the underlying asset, i.e., , for and .
- 11:
– double array
-
.
, contains the third-order Greek measuring the sensitivity of the second-order Greek to change in the time, i.e., , for and .
- 12:
– double array
-
.
, contains the third-order Greek measuring the sensitivity of the second-order Greek to change in the volatility of the underlying asset, i.e., , for and .
- 13:
– double array
-
.
, contains the second-order Greek measuring the sensitivity of the first-order Greek to change in the volatility of the underlying asset, i.e., , for and .
- 14:
– int64int32nag_int scalar
unless the function detects an error (see
Error Indicators and Warnings).
Error Indicators and Warnings
Errors or warnings detected by the function:
-
-
On entry, was an illegal value.
-
-
Constraint: .
-
-
Constraint: .
-
-
Constraint: and .
-
-
Constraint: and .
-
-
Constraint: .
-
-
Constraint: .
-
-
Constraint: .
-
-
Constraint: .
-
-
Constraint: .
-
-
Constraint: .
-
An unexpected error has been triggered by this routine. Please
contact
NAG.
-
Your licence key may have expired or may not have been installed correctly.
-
Dynamic memory allocation failed.
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_specfun_cdf_normal (s15ab) and
nag_specfun_erfc_real (s15ad)). An accuracy close to
machine precision can generally be expected.
Further Comments
None.
Example
This example computes the price of a cash-or-nothing call with a time to expiry of years, a stock price of and a strike price of . The risk-free interest rate is per year, there is an annual dividend return of and the volatility is per year. If the option is in-the-money at expiration, i.e., if , the payoff is .
Open in the MATLAB editor:
s30cb_example
function s30cb_example
fprintf('s30cb example results\n\n');
put = 'C';
s = 110.0;
k = 5.0;
sigma = 0.35;
r = 0.05;
q = 0.04;
x = [87.0];
t = [0.75];
[p, delta, gamma, vega, theta, rho, crho, ...
vanna, charm, speed, colour, zomma, vomma, ifail] = ...
s30cb(...
put, x, s, k, t, sigma, r, q);
fprintf('\nBinary (Digital): Cash-or-Nothing\n European Call :\n');
fprintf(' Spot = %9.4f\n', s);
fprintf(' Payout = %9.4f\n', k);
fprintf(' Volatility = %9.4f\n', sigma);
fprintf(' Rate = %9.4f\n', r);
fprintf(' Dividend = %9.4f\n\n', q);
fprintf(' Time to Expiry : %8.4f\n', t(1));
fprintf('%8s%9s%9s%9s%9s%9s%9s%9s\n','Strike','Price','Delta','Gamma',...
'Vega','Theta','Rho','CRho');
fprintf('%8.4f%9.4f%9.4f%9.4f%9.4f%9.4f%9.4f%9.4f\n\n', x(1), p(1,1), ...
delta(1,1), gamma(1,1), vega(1,1), theta(1,1), rho(1,1), crho(1,1));
fprintf('%26s%9s%9s%9s%9s%9s\n','Vanna','Charm','Speed','Colour',...
'Zomma','Vomma');
fprintf('%17s%9.4f%9.4f%9.4f%9.4f%9.4f%9.4f\n\n', ' ', vanna(1,1), ...
charm(1,1), speed(1,1), colour(1,1), zomma(1,1), vomma(1,1));
s30cb example results
Binary (Digital): Cash-or-Nothing
European Call :
Spot = 110.0000
Payout = 5.0000
Volatility = 0.3500
Rate = 0.0500
Dividend = 0.0400
Time to Expiry : 0.7500
Strike Price Delta Gamma Vega Theta Rho CRho
87.0000 3.5696 0.0467 -0.0013 -4.2307 1.1142 1.1788 3.8560
Vanna Charm Speed Colour Zomma Vomma
-0.0514 0.0153 0.0000 -0.0019 0.0079 12.8874
PDF version (NAG web site
, 64-bit version, 64-bit version)
© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015