Despite its tremendous success, the Black-Scholes model [2] of option pricing has some well-known deficiencies,
perhaps the most important of which is the assumption that the volatility of
the return on the underlying asset is constant.
Since option prices in the market are usually quoted in terms of their
Black-Scholes implied volatilities, it is easy to observe that this assumption
is not borne out by reality; leading to the famous dictum that the implied
volatility is “… the wrong number to put in the wrong formula to obtain the
right price of plain vanilla options” [11]. The implied
volatility of traded options generally varies, both with strike price and with
maturity of the option, and since the implied volatility depends on two
variables, one often talks of an implied volatility surface.
The question then arises as to how to price options in a
way which is consistent with this market-observed variation of implied
volatility. Although it is easy to
modify the Black-Scholes model to take into account of the term structure of
implied volatilities, the variation with strike price – the so-called
volatility smile or skew – cannot be incorporated into the Black-Scholes model. One of the concepts used to cope with this
problem is that of stochastic volatility.
There are various models of stochastic volatility, in particular those
due to Hull & White [6], Stein & Stein [12], Hagan et al [4] and, arguably the most popular, Heston [5].
The constant volatility of the Black-Scholes model
corresponds to the assumption that the underlying asset follows a lognormal
stochastic process. The basic assumption
of stochastic volatility models is that the volatility (or possibly, the
variance) of the underlying asset is itself a random variable. There are two Brownian motions: one for the
underlying, and one for the variance; stochastic volatility model are thus
two-factor models. Of course, the two
processes are correlated and, at least in the equity world, the correlation is
usually taken to be negative: increases/decreases in the asset price tend to be
coupled to decreases/increases in the volatility.
Once the variance of the underlying has been made
stochastic, closed-form solutions for European call and put options will in
general no longer exist. One of the
attractive features of the Heston model, however, is that (quasi-) closed-form
solutions do exist for European plain vanilla options. This feature, in turn, makes calibration of
the model feasible.
The implied volatility of such a European option is then
the value of the volatility which would have to be used in the Black-Scholes
formula, to get that specific price. By
varying the strike price and maturity, one can thus back out the implied
volatility surface for the specific set of Heston model parameters under
consideration. One finds that the Heston
model gives rise to a wide variety of implied volatility surfaces, many of
which capture market-observed behavior very well.
The Heston model has five independent parameters, all of which
can be determined by calibrating to the market-observed prices of European
options of various strikes and/or maturities.
Once a set of parameters has been determined in this way, one can price other
options, say a European option of a different strike, an American option, or a
more exotic product.
The FINCAD functions described here allow the Heston model
of stochastic volatility to be calibrated to a set of European options, and for
European options to be priced within that model. They further allow the implied volatility
surface for the model to be computed. The
objectives are: fast pricing of European options, necessary for calibration
routines; the calibration itself; calculation of the Greeks, including
sensitivities to the Heston model parameters; and calculating the implied
volatility surface for a given set of such parameters.
The stochastic volatility model introduced by Heston [5] takes the underlying asset price
to follow a standard
lognormal process, and the variance
to follow a
mean-reverting square root process:
,
where
and
are two standard
Brownian motions which are correlated through
,
being the
correlation.
and
are respectively the (continuously
compounded) risk-free interest rate and dividend yield,
is the speed of mean
reversion,
is the value of the
long-term variance and
is the volatility of
volatility.
The final parameter needed to specify the model is the
initial variance,
. In terms of
, a variable which we will use below, the process for
the stock price is
.
In general, the price at time
of say, a
European call option maturing at time
is given by the
discounted expectation value
![]()
where
is the probability
density function of the underlying logarithmic asset price.
Since analytic forms for such option prices cannot always be
derived, it often turns out to be useful to work with the characteristic
function
.
This is just the Fourier transform of the
probability density function from x-space to u-space.
Since the characteristic function is a martingale, one can prove that it
obeys the following equation
.
The solution with the correct boundary conditions
is
,
where
is the forward price
and we have defined

where

There is actually a slightly different – and
seemingly equivalent – form for the functions
and
, the use of which is widespread in the
literature. However, these are
complex-valued functions and one has to be careful of branch cuts. The alternative form crosses the branch cut
many times and one has to treat it very carefully [7]. The above
form does not suffer from these problems (it never crosses the branch cut [1]) and is thus much easier to deal with.
To price plain vanilla European options, one can use the
characteristic function in different ways.
We choose to use the Fast Fourier Transform (FFT) technique of Carr
& Madan [3]. The beauty of
this technique is that the prices of options with a range of strikes are
computed all at once.
By taking the option price to be a function of the log-strike,
, Carr & Madan show that [3]
Equation 1
where
and
is a damping parameter
necessary to ensure that the option price as a function of
is integrable.
Actually, Carr & Madan consider only call option
prices, for which we need
. On the other hand,
it is easy to see that to compute put option prices, we instead need
. Indeed, by analyzing
contour integrals, Lee shows [8] that Equation 1 computes the following option prices,
depending on the value of
:
·
: put option, payoff = ![]()
·
: ½-cash secured put option, payoff = ![]()
·
: covered call option, payoff = ![]()
·
: ½-covered call option, payoff = ![]()
·
: call option, payoff = ![]()
The cases
are a little delicate
since then
blows up. To deal with this, we use
,
which has a well-defined limit at
.
Since we can convert all of the above instruments into
either calls or puts, using put-call parity, we are free to use whichever value
of
is best for the given
set of model parameters. To determine
this, note that
,
where the final step follows from the definition of
the characteristic function.
For the damped price to be integrable, we thus need the
th moment of the stock price to be finite [3]. Analysis of
the moments of the stock price in the Heston model thus leads to various
conditions on
which must be
satisfied. The choice of
will affect the error
in the resulting price, as described in [1] and [8]. Contrary to
much of the literature, the value for any given set of model parameters must be
chosen dynamically. We choose values of
along the lines
suggested in [8].
There is a similar story for the binary call and put options,
for which Equation 1 still holds, but with
replaced by
![]()
where
for a binary call and
for a binary put.
The integral in Equation 1
is computed using FFT methods in the following way. First discretize in
-space, fixing the step size,
, and the number of steps,
, used to compute the integral. For efficient FFT algorithms, this should be
a power of 2:
. (The exponent
is entered by
the user in the method_param table.)
Then
,
where
.
The next step is to discretize in
-space around the (forward) at-the-money strike
,
where
and
.
The result is
,
where
![]()
and the sum can be computed using standard FFT techniques.
The result is a set of option prices for the given number
of discrete values of
. Linear
interpolation is then used to compute the option price for the required strike
value; if the
-spacing is very small, this approximation will not introduce
substantial errors. However, for
numerical accuracy, one needs
to be small. But one also wants small
, so
must be large. For this reason, Carr & Madan actually compute
the integral using Simpson’s rule to get better accuracy for larger
, and this correction is easy to implement.
The Heston model parameters can be determined by
calibrating to a market observed implied volatility smile for European options. The calibration routine takes as its starting
point the implied volatilities for a set of such options, with varying strikes
and/or maturities. The volatilities are
converted to option prices, and the parameters of the Heston model are chosen
so as to best match this set of market data.
All calibration algorithms search a region of parameter
space in a more or less intelligent way, by minimizing an error metric. For a given set of parameters, the prices of
the relevant options are computed using the pricing methodology described above. The error metric is then calculated. This is just a way to measure the discrepancy
between the market data and the option prices predicted by the model with a
given set of parameters. The smaller the
error metric, the closer the predicted prices are to the market data. The next trial set of parameters are then
chosen according to how the error metric has changed, and the process begins
again.
The calibration function described below takes a set of
parameter ranges and a set of initial parameter values. The routine starts with the set of initial
parameters, and searches the region of parameter space specified by the
parameter ranges, in order to minimize the error metric. The user thus has control over what range of
parameters to look at for a given set of market data and can also, for example,
use a previous set of calibrated parameters as a starting point for a future
calibration.
FINCAD provides the choice of three calibration algorithms
(Levenberg-Marquardt, downhill simplex and differential evolution) and also the
choice of three error metrics (weighted
, or a weighted
norm, a weighted
norm and a weighted
norm). These are all described in detail in the Calibration of
Interest Rate Models FINCAD Math Reference document.
In addition to this, different weights can be assigned to
each individual option in one of three ways.
The user might want to assign less weight to data for illiquid out-of-the-money
options, for example, and more weight to the liquid at-the-money options. The weights can be chosen in one of three
ways, and these are again described in detail in the Calibration of Interest Rate Models
FINCAD Math Reference document. They can be chosen to be the vegas of the
options (out-of-the-money having less weight than at-the-money options), or be
chosen to be constant (all options having the same weight).
Alternatively, the weights can be supplied by the user in
the form of implied volatility uncertainties.
The uncertainty in the implied volatility of an individual option is the
inverse of the weight (a large/small uncertainty is thus a small/large weight),
and a good choice would be to use the bid-ask spread. This would again attach less weight to
illiquid options and more weight to the liquid data, and would usually be the
preferred method.
The differential evolution algorithm is most likely to
find the best set of parameters for a given set of option prices, but the algorithm
can take a significant amount of time to finish its search. For that reason, the calibration function
returns an order-of-magnitude estimate for the length of time it will
take. One recommendation is to use the
differential evolution algorithm periodically and, at least if the market data
haven’t changed too much, to use the Levenberg-Marquardt algorithm on a more
frequent basis. The results of the
differential evolution algorithm can then be used as the set of initial
parameter values for the Levenberg-Marquardt routine.
aaCalibrateOptions_Heston
(price_u, d_mkt, smile_type, smile_tbl, df_crv_std, df_crv_hld, intrp,
param_rng, param_ini, min_method, min_param, error_metric, weighting,
table_type)
Calibrates the
Heston model of stochastic volatility to a given set of quoted market implied
volatilities for European call and/or put options. The implied volatilities are converted to
price prior to the calibration. The
calibration can be done with Levenberg-Marquardt, downhill simplex or
differential evolution algorithms.
aaOption_Heston_eu_p
(price_u, payoff_type, strike_tbl, d_exp, d_v, param_tbl, df_crv_std,
df_crv_hld, intrp, method, method_param, stat)
Calculates the price and risk statistics of a European
plain vanilla call or put option, a standard European option strategy, or a
user-defined portfolio of European plain vanilla options, within Heston’s
stochastic volatility model. The
function uses quasi-closed-form solutions.
aaOption_Heston_payoff_eu_p
(price_u, payoff_tbl, d_exp, d_v, param_tbl, df_crv_std, df_crv_hld, intrp,
method, method_param, stat)
Calculates the price and risk statistics of an option with
a freestyle payoff, within Heston’s stochastic volatility model. The function uses quasi-closed-form
solutions.
aaOption_Heston_iv
(price_u, TK_tbl, d_v, param_tbl, df_crv_std, df_crv_hld, intrp, method,
method_param, stat)
Calculates the implied volatility smile for Heston’s
stochastic volatility model. The
function uses quasi-closed-form solutions.
aaCalibrateOptions_Heston
|
Input Argument |
Type |
Description |
|
price_u |
number |
current value of the underlying stock |
|
d_mkt |
date |
market date on which the implied volatility smile is
observed |
|
smile_type |
number |
switch to select the type of smile_tbl given as an input |
|
smile_tbl |
table |
the market observed implied volatility smile |
|
df_crv_std |
table or rate |
as above |
|
df_crv_hld |
table or rate |
as above |
|
intrp |
number |
as above |
|
param_rng |
table |
model parameter range table. This is a 2×5 table specifying the ranges
of the 5 Heston model parameters. The
1st and 2nd rows of the parameter range table are used
to specify lower and upper bounds on the parameter values. If the lower and upper bounds of a
parameter have the same value, then the parameter is held fixed at this value
during the calibration. |
|
param_ini |
table |
initial parameter table. This is a 1x5 table which sets
the initial parameter values for calibration with the Levenberg-Marquardt or
downhill simplex algorithms. The table is ignored if the error minimization
method is differential evolution. |
|
min_method |
number |
error minimization algorithm. |
|
min_param |
table |
minimization parameter table. This one-row table has at
least two columns, the maximum number of iteration steps and the tolerance
for the minimization. In the case of differential evolution a fractional
number of iteration steps seeds the random number generator with a fixed
seed. Three additional columns are optional for differential evolution: The
number of population members per parameter (NP), the amplification factor
(F), and the crossover probability (CR). |
|
error_metric |
number |
switch to select the error metric used in the calibration. |
|
weighting |
number |
switch to select the weighting of market data in the error
metric. |
|
table_type |
number |
switch to select the type of output table. |
More details on the calibration-specific inputs (param_rng,
param_ini, min_method, min_param, error_metric, weighting and table_type) can
be found in the Calibration
of Interest Rate Models FINCAD Math Reference document.
The implied volatility smile can be specified in one of
two ways (in all cases, the option maturities must be given as dates >
d_mkt, or as number of years since d_mkt):
·
if smile_type = strike
vs. implied volatility
smile_tbl
|
maturity |
exercise price |
implied volatility |
uncertainty |
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
where
the
are implied (Black-Scholes)
volatilities, as a function of strikes
and
maturities
,and the
are
optional volatility uncertainties.
·
if smile_type = delta
vs. implied volatility
smile_tbl
|
maturity |
delta |
implied volatility |
uncertainty |
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
where now the volatilities are entered as a function
of deltas
and maturities
. Since
for a put and
for a call, the user
can enter either call or put deltas (or a mixture), without having to specify
which is which.
In both cases, the uncertainty column is optional, as
discussed above.
aaOption_Heston_eu_p
|
Input Argument |
Type |
Description |
|
price_u |
number |
current value of the underlying stock |
|
payoff_type |
number |
switch to select the payoff of the option/strategy 1. portfolio
(user-defined), 2. vanilla
call, 3. vanilla
put, 4. binary
call, 5. binary
put, 6. call
(bull) spread, 7. put
(bear) spread, 8. risk
reversal (collar), 9. seagull,
10. straddle,
11. strangle,
12. guts,
13. butterfly,
14. condor,
15. iron
butterfly, 16. iron
condor, 17. box,
18. ratio
call spread, 19. ratio
put spread, 20. synthetic
forward, 21. participating
forward (put), 22. participating
forward (call), 23. call
ladder, 24. put
ladder, 25. call
spread vs. put, 26. put
spread vs. call, 27. straddle
vs. call, 28. straddle
vs. put. The choice will affect the form of the
strike_tbl input. |
|
strike_tbl |
table or number |
table of strikes to define the option, portfolio or
strategy; see below for details |
|
d_exp |
date |
maturity date of the option |
|
d_v |
date |
valuation date |
|
param_tbl |
table |
table of parameters to define the stochastic volatility model;
see below for details |
|
df_crv_std |
table or rate |
risk-free discount factor curve. The discount factor curve may be input as an
N×2 table (column 1 = date, column 2 = discount factor), or as a single cell
containing a rate. If input as a single rate, there are three format choices:
1.
a rate (1×1 table); or 2.
a rate and a rate quotation basis as per
Switch 43 (1×2 table); or 3.
a rate, a rate quotation basis, and an accrual
method as per Switch 331 (1×3 table). If the basis or accrual methods are not provided,
they are assumed to be annual, actual/365.
An N×2 flat-rate discount factor curve is constructed internally
between the value date and the expiry date, using the rate, basis and accrual
method. |
|
df_crv_hld |
table or rate |
dividend discount factor curve. The discount factor curve may be input as an
N×2 table (column 1 = date, column 2 = discount factor), or as a single cell
containing a rate. If input as a single rate, there are three format choices:
1.
a rate (1×1 table); or 2.
a rate and a rate quotation basis as per
Switch 43 (1×2 table); or 3.
a rate, a rate quotation basis, and an accrual
method as per Switch 331 (1×3 table). If the basis or accrual methods are not
provided, they are assumed to be annual, actual/365. An N×2 flat-rate discount factor curve is
constructed internally between the value date and the expiry date, using the
rate, basis and accrual method. |
|
intrp |
number |
switch to select which interpolation method to use on the
discount factor curves (linear, cubic spline, exponential, linear spot rates) |
|
method |
number |
switch to select which numerical method to use (must be =
1). |
|
method_param |
table |
table of parameters for the numerical method; see below
for details |
|
stat |
table or number |
switch to select which output the user wants; see Description of Outputs section |
aaOption_Heston_payoff_eu_p
|
Input Argument |
Type |
Description |
|
price_u |
number |
current value of the underlying stock |
|
payoff_tbl |
table |
table defining the payoff profile. This is an N×2 table (column 1 =
underlying, column 2 = payoff) specifying the payoff at various values of the
underlying. A piecewise linear payoff
function is constructed internally from this data, so it is important to
enter all the points necessary to construct the correct (piecewise linear)
payoff. |
|
d_exp |
date |
maturity date of the option |
|
d_v |
date |
valuation date |
|
param_tbl |
table |
table of parameters to define the stochastic volatility
model; see below for details |
|
df_crv_std |
table or rate |
as above |
|
df_crv_hld |
table or rate |
as above |
|
intrp |
number |
as above |
|
method |
number |
switch to select which numerical method to use (must be =
1). |
|
method_param |
table |
table of parameters for the numerical method; see below
for details |
|
stat |
table or number |
switch to select which output the user wants; see Description of Outputs section |
aaOption_Heston_iv
|
Input Argument |
Type |
Description |
|
price_u |
number |
current value of the underlying stock |
|
TK_tbl |
table |
table of option maturity dates and exercise prices for
which to return the implied volatility |
|
d_v |
date |
valuation date |
|
param_tbl |
table |
table of parameters to define the stochastic volatility
model; see below for details |
|
df_crv_std |
table or rate |
as above |
|
df_crv_hld |
table or rate |
as above |
|
intrp |
number |
as above |
|
method |
number |
switch to select which numerical method to use (must be =
1). |
|
method_param |
table |
table of parameters for the numerical method; see below
for details |
In more detail, the stochastic volatility model in these
functions is specified through the param_tbl input. It must have the following form.
param_tbl
|
initial volatility |
long-term volatility |
speed of mean
reversion |
volatility of
volatility |
correlation |
|
|
|
|
|
|
where
,
,
and
are all
and
.
The only numerical method currently implemented is the FFT,
as described above. The parameters
needed to define this method are specified through the method_param input. It must have the following form.
method_param
|
integral step size |
exponent |
|
|
|
where
is an integer,
the number of steps used in the FFT routine being
.
The various options/portfolios/strategies in the function aaOption_Heston_eu_p
are specified through the payoff_type and strike_tbl inputs. The various strategies FINCAD supports are described
in [9],
where P&L diagrams can also be found; see the Appendix for a breakdown into
their constituent plain vanillas. The
strike_tbl should specify the relevant exercise prices, and must take one of
the following forms.
·
if payoff_type = portfolio
(user-defined), the details of the options in the portfolio must be
specified.
strike_tbl
|
long/short |
call/put |
strike |
|
|
1/2 |
|
|
|
1/2 |
|
|
… |
… |
… |
|
|
1/2 |
|
Here,
denotes respectively a
long/short position in
options, which are
either calls (1) or puts (2), with the given strikes. The individual options must be either all
European or all American.
·
if payoff_type = vanilla
call, vanilla put, straddle or synthetic forward, only a single exercise
price must be entered.
strike_tbl
|
exercise price |
|
|
·
if payoff_type = vanilla
call or vanilla put (and if option_style = American), a time-varying
exercise price can also be specified.
strike_tbl
|
effective date |
terminating date |
exercise price |
|
|
|
|
|
|
|
|
|
… |
… |
… |
|
|
|
|
where
each terminating date must be greater than the
corresponding effective date
and
each effective date must be greater than or equal to
the previous terminating date ![]()
By allowing for gaps in this table, blackout periods
are thus allowed (alternatively, a blackout period can be specified by setting
).
·
if payoff_type = binary
call or binary put, a single exercise price and a cash payout must be
specified.
strike_tbl
|
exercise price |
cash payout |
|
|
|
The binaries are digital all-or-nothing options, which
pay a fixed amount of cash (and can be European or American).
·
if payoff_type = participating
forward (put) or participating forward (call), a single exercise price
and a percentage (the degree of participation) must be specified.
strike_tbl
|
exercise price |
percentage |
|
|
|
·
if payoff_type = straddle
vs. call or straddle vs. put, then two distinct exercise prices must be
specified.
strike_tbl
|
exercise price 1 |
exercise price 2 |
|
|
|
·
if payoff_type = call
(bull) spread, put (bear) spread, risk reversal (collar), strangle, guts,
butterfly, condor, box, then two distinct exercise prices must be
specified.
strike_tbl
|
exercise price 1 |
exercise price 2 |
|
|
|
where the restriction
applies.
·
if payoff_type = call
spread vs. put or put spread vs. call, then three distinct exercise
prices must be specified.
strike_tbl
|
exercise price 1 |
exercise price 2 |
exercise price 3 |
|
|
|
|
where the restriction
applies.
·
if payoff_type = seagull,
iron butterfly, call ladder, put ladder, then three distinct exercise
prices must be specified.
strike_tbl
|
exercise price 1 |
exercise price 2 |
exercise price 3 |
|
|
|
|
where the restriction
applies.
·
if payoff_type = ratio
call spread or ratio put spread, then two exercise prices and two
integers must be specified (the integers give the ratio of the spread).
strike_tbl
|
exercise price 1 |
exercise price 2 |
number 1 |
number 2 |
|
|
|
|
|
where the restrictions
and
apply.
·
if payoff_type = iron
condor then four distinct exercise prices must be specified.
strike_tbl
|
strike 1 |
strike 2 |
strike 3 |
strike 4 |
|
|
|
|
|
where the restriction
applies.
The function aaOption_Heston_payoff_eu_p
allows the user to specify an arbitrary (piecewise linear) payoff
function. This is done through the
payoff_tbl input which must take the following form:
payoff_tbl
|
underlying |
payoff |
|
|
|
|
|
|
|
… |
… |
|
|
|
where the payoff
is given for a set of
underlying values
. A piecewise linear
payoff function is constructed from this data internally, so it is important
that the user enter enough points to construct the payoff of interest. Outside of the range of given underlying
values, the payoff is constructed by linear extrapolation from the last two (or
first two) points in the payoff_tbl.
aaCalibrateOptions_Heston
If the table_type input is equal to ‘time estimate
for calibration’, the output is a single cell with an order-of-magnitude
estimate of the time in seconds required for the calibration.
Otherwise, the output is a 1-row table with the
following columns:
|
Col |
Output Statistic |
Type |
Description |
|
1 |
time |
number |
time for fit |
|
2 |
number of internal function calls |
number |
number of iterations used by the iterative calibration
algorithm. |
|
3 |
calibration converged |
number |
convergence flag that indicates whether or not the
calibration converged on a solution for the model parameters. |
|
4 |
error metric |
number |
error metric for
the calibrated model parameter values. |
|
5 to 9 |
model parameters |
number/rate |
calibrated values of the 5 Heston model parameters. |
aaOption_Heston_eu_p, aaOption_Heston_payoff_eu_p
This function outputs the price and risk statistics
of the relevant option, strategy or portfolio.
|
Output Statistics |
Type |
Description |
|
fair value |
number |
fair value of the option. |
|
delta |
number |
rate of change in the fair value of the option per change
in the current value of the underlying stock.
This is the derivative of the option price with respect to the current
value of the underlying. |
|
gamma |
number |
rate of change in the value of delta per change in the
current value of the underlying stock.
This is the second derivative of the option price with respect to the
current value of the underlying. |
|
theta |
number |
rate of change in the fair value of the option per one day
decrease in the option time. This is
the negative of the derivative of the option price with respect to the option
time (in years), divided by 365. |
|
sensitivity to initial volatility |
number |
rate of change in the fair value of the option per 1%
change in initial annual volatility.
This is the derivative of the option price with respect to the initial
annual volatility, divided by 100. |
|
sensitivity to long-term volatility |
number |
rate of change in the fair value of the option per 1%
change in long-term annual volatility.
This is the derivative of the option price with respect to the
long-term annual volatility, divided by 100. |
|
sensitivity to speed of mean reversion |
number |
rate of change in the fair value of the option per change
in the speed of mean reversion. This
is the derivative of the option price with respect to the speed of mean
reversion. |
|
sensitivity to volatility of volatility |
number |
rate of change in the fair value of the option per change
in the volatility of volatility. This
is the derivative of the option price with respect to the volatility of
volatility. |
|
sensitivity to correlation |
number |
rate of change in the fair value of the option per change
in the correlation. This is the
derivative of the option price with respect to the correlation. |
|
rho of rate |
number |
rate of change in the fair value of the option per 1%
change in the risk-free rate. This is
the derivative of the option price with respect to the risk-free rate,
divided by 100. |
|
rho of holding cost |
number |
rate of change in the fair value of the option per 1%
change in the dividend rate. This is
the derivative of the option price with respect to the dividend rate, divided
by 100. |
This function will output a table of implied volatilities
for the strikes and maturities given in the TK_tbl input. The results can be plotted to give an implied
volatility surface. The output table
will be of the following form (the first two columns are just the TK_tbl
input):
output_smile_tbl
|
maturity |
exercise price |
implied volatility |
|
|
|
|
|
… |
… |
… |
|
|
|
|
|
|
|
|
|
… |
… |
… |
|
|
|
|
|
… |
… |
… |
|
|
|
|
|
… |
… |
… |
|
|
|
|
where the
are implied
volatilities for maturity
and exercise price
.
Today is January 1, 2007.
Suppose we want to use the Heston model to price some exotic option and,
to that end, need to calibrate the model to a set of market observed implied
volatilities for European options on the S&P 500. The current underlying price is 1250, the risk-free
rate is 5% (annual compounding, actual/365 accrual), and the dividend yield on
the S&P 500 is 2% (annual compounding, actual/365 accrual).
Suppose the market observed implied volatilities are given
by the following:
smile_tbl
|
expiry date |
strike |
volatility |
uncertainty |
|
1-Apr-2007 |
1000 |
23.000% |
2.000% |
|
1-Apr-2007 |
1100 |
21.000% |
1.000% |
|
1-Apr-2007 |
1200 |
19.200% |
0.500% |
|
1-Apr-2007 |
1300 |
18.700% |
1.000% |
|
1-Apr-2007 |
1400 |
18.500% |
1.500% |
|
1-Jul-2007 |
1000 |
22.000% |
3.000% |
|
1-Jul-2007 |
1100 |
20.700% |
2.500% |
|
1-Jul-2007 |
1200 |
19.400% |
2.000% |
|
1-Jul-2007 |
1300 |
18.600% |
1.000% |
|
1-Jul-2007 |
1400 |
18.400% |
2.000% |
|
1-Oct-2007 |
1000 |
21.500% |
3.500% |
|
1-Oct-2007 |
1100 |
20.500% |
2.500% |
|
1-Oct-2007 |
1200 |
19.500% |
2.000% |
|
1-Oct-2007 |
1300 |
18.700% |
1.000% |
|
1-Oct-2007 |
1400 |
18.600% |
2.000% |
The implied volatilities are the averages of the
bid-ask volatilities, and the uncertainties are the bid-ask spreads.
The model
parameter range table is set up as follows:
param_rng
|
initial volatility |
long-term volatility |
speed of mean reversion |
volatility of volatility |
correlation |
|
10.000% |
10.000% |
0 |
0 |
-1 |
|
50.000% |
50.000% |
3 |
1 |
0 |
If using the Levenberg-Marquardt or downhill
simplex calibration algorithms, then the initial parameters can be set up such
that they are at the midpoints of these intervals:
param_ini
|
initial volatility |
long-term volatility |
speed of mean reversion |
volatility of volatility |
correlation |
|
30.000% |
30.000% |
1.5 |
0.5 |
-0.5 |
although note that this table is ignored by the
differential evolution algorithm. We
choose the
statistic as
our error metric with an error tolerance of 0.001. We fix the maximum number of
iteration steps at 500:
min_param
|
max iteration steps |
tolerance |
|
500 |
0.001 |
We use differential
evolution to reduce the possibility of terminating the calibration in a local
minimum, though the calibration will then take some time to run. In this case, the optional parameters in the
min_param table can be set by the user, though the default values have been
optimized for a wide range of calibration tasks and should not be changed in
general.
All inputs to the aaCalibrateOptions_Heston
function are summarized below.
aaCalibrateOptions_Heston
|
Argument |
Description |
Example Data |
Switch |
Comments |
|
price_u |
underlying price |
1250 |
|
|
|
d_mkt |
market date |
1-Jan-2007 |
|
|
|
smile_type |
type of implied volatility smile table |
1 |
implied volatility vs. strike |
|
|
smile_tbl |
implied volatility smile table |
see above |
|
|
|
df_crv_std |
discount factor curve – risk free |
5% |
|
annual compounding and actual/365 accrual is assumed |
|
df_crv_hld |
discount factor curve – holding cost |
2% |
|
annual compounding and actual/365 accrual is assumed |
|
intrp |
interpolation method |
3 |
exponential |
not used for constant rates |
|
param_rng |
model parameter range table |
see above |
|
|
|
param_ini |
initial parameter table |
see above |
|
not used for differential evolution |
|
min_method |
error minimization algorithm |
3 |
differential evolution |
|
|
min_param |
minimization parameter table |
see above |
|
|
|
error_metric |
error metric used in the calibration |
1 |
chi-squared |
|
|
weighting |
weighting of market data |
1 |
user input of volatility uncertainties |
|
|
table_type |
type of output table |
1 |
time estimate |
|
Before the calibration we estimate the required time.
In the first call to the function we set the table_type input to ‘time estimate
for calibration’. The function output is
|
time estimate for calibration |
|
8156 |
given in seconds, or a about 2¼ hours. Note that this is
only an order-of-magnitude, and the calibration will usually take substantially
less time to run.
We then run the calibration (we change the
table_type input to ‘calibration’). The
results are given below. The fitted values of all parameters are between the
lower and upper bounds as specified in the model parameter range table. The
convergence flag is 0, which indicates that the calibration converged. None of the parameter values are close to the
initial boundaries in the model parameter range table, which provides further
indication that the algorithm found the function minimum in parameter space. Therefore, this calibration was successful.
|
time for fit |
no. iter |
conv. flag |
error metric |
initial volatility |
long-term volatility |
speed of mean reversion |
volatility of volatility |
correlation |
|
3244.436 |
405 |
0 |
0.148 |
18.950% |
20.575% |
2.625 |
0.487 |
-0.184 |
Note that the calibration took a little less than 1
hour. The other algorithms would take
much less time to run.
These parameter values can be input into the Heston
model implied volatility function, aaOption_Heston_iv,
to verify the quality of the calibration.
As expected, the differences between the model-predicted implied volatilities
and the input implied volatilities (column 3) are small, and are well within
the uncertainties given in the smile_tbl input above. The differences do not seem to be biased in
the positive or negative direction, again indicating that this is a successful
calibration.
|
market implied volatility (see smile_tbl above) |
model-predicted implied volatility using aaOption_Heston_iv |
difference between model and market |
|
23.000% |
22.873% |
-0.127% |
|
21.000% |
20.940% |
-0.060% |
|
19.200% |
19.270% |
0.070% |
|
18.700% |
18.421% |
-0.279% |
|
18.500% |
18.660% |
0.160% |
|
22.000% |
22.132% |
0.132% |
|
20.700% |
20.532% |
-0.168% |
|
19.400% |
19.273% |
-0.127% |
|
18.600% |
18.575% |
-0.025% |
|
18.400% |
18.542% |
0.142% |
|
21.500% |
21.630% |
0.130% |
|
20.500% |
20.355% |
-0.145% |
|
19.500% |
19.358% |
-0.142% |
|
18.700% |
18.776% |
0.076% |
|
18.600% |
18.612% |
0.012% |
In subsequent calibrations to market data where
for example the implied volatilities are updated, we could use the parameter
values found in this calibration as initial parameters and carry out the fit
with the less time consuming Levenberg-Marquardt algorithm.
Today is January 1, 2007.
Consider an at-the-money European call option that matures 6 months from
today. It has an exercise price of
$50. The current underlying price is $50,
the risk-free rate is 7.5% (annual compounding, actual/365 accrual), and the
dividend rate is 2.5% (annual compounding, actual/365 accrual).
Suppose we want to value the option with the assumption
that movements in the underlying asset are described by the Heston model of
stochastic volatility, with the following parameters (these could have been
found by calibrating the model to market data):
param_tbl
|
initial volatility |
long-term volatility |
speed of mean reversion |
volatility of volatility |
correlation |
|
50% |
75% |
1 |
1 |
-0.5 |
The most direct valuation is to call aaOption_Heston_p
with the following inputs:
aaOption_Heston_p
|
Argument |
Description |
Example Data |
Switch |
Comments |
|
price_u |
underlying price |
50 |
|
|
|
payoff_type |
payoff type |
2 |
vanilla call |
|
|
strike_tbl |
strike table |
50 |
|
a single strike to define the call |
|
d_exp |
expiry date |
1-Jul-2007 |
|
6 months from today |
|
d_v |
value date |
1-Jan-2007 |
|
|
|
param_tbl |
Heston model parameters |
see above |
|
|
|
df_crv_std |
discount factor curve – risk free |
7.5% |
|
annual compounding and actual/365 accrual is assumed |
|
df_crv_hld |
discount factor curve – holding cost |
2.5% |
|
annual compounding and actual/365 accrual is assumed |
|
intrp |
interpolation method |
3 |
exponential |
not used for constant rates |
|
method |
numerical method |
1 |
Fast Fourier Transform |
|
|
method_param |
parameters for the numerical method |
see below |
|
|
|
stat |
list of statistics |
1…11 |
|
|
The parameters for the Fast Fourier Transform are
chosen to be the default values:
method_param
|
integral step size |
exponent |
|
0.03 |
14 |
With these inputs, the results are:
Results
|
Output Statistics |
Description |
Value |
|
1 |
fair value |
7.821858222 |
|
2 |
delta |
0.641513168 |
|
3 |
gamma |
0.020845022 |
|
4 |
theta |
-0.02419735 |
|
5 |
sensitivity to initial volatility |
0.092356488 |
|
6 |
sensitivity to long-term volatility |
0.039486822 |
|
7 |
sensitivity to speed of mean reversion |
0.80575448 |
|
8 |
sensitivity to volatility of volatility |
-0.692758224 |
|
9 |
sensitivity to correlation |
0.255113021 |
|
10 |
rho of rate |
0.111881181 |
|
11 |
rho of holding cost |
-0.155180599 |
To understand some of the features of the other
FINCAD functions described here, and since the call option has a piecewise
linear payoff function, we can check the above results by calling the function aaOption_Heston_payoff_eu_p
with the following inputs:
aaOption_Heston_payoff_eu_p
|
Argument |
Description |
Example Data |
Switch |
Comments |
|
price_u |
underlying price |
50 |
|
|
|
payoff_tbl |
payoff table |
see below |
|
|
|
d_exp |
expiry date |
1-Jul-2007 |
|
|
|
d_v |
value date |
1-Jan-2007 |
|
6 months from today |
|
param_tbl |
Heston model parameters |
see above |
|
|
|
df_crv_std |
discount factor curve – risk free |
7.5% |
|
annual compounding and actual/365 accrual is assumed |
|
df_crv_hld |
discount factor curve – holding cost |
2.5% |
|
annual compounding and actual/365 accrual is assumed |
|
intrp |
interpolation method |
3 |
exponential |
not used for constant rates |
|
method |
numerical method |
1 |
Fast Fourier Transform |
|
|
method_param |
parameters for the numerical method |
see above |
|
|
|
stat |
list of statistics |
1…11 |
|
|
To specify the payoff of the European call, we
need only three distinct points in the payoff_tbl. For example:
payoff_tbl
|
underlying |
payoff |
|
20 |
0 |
|
50 |
0 |
|
80 |
30 |
The function internally constructs the familiar
piecewise linear payoff function from these values displayed in Figure 1:

Figure 1
With these inputs, the results are as for aaOption_Heston_p
above.
Today is January 1, 2007.
Consider a European butterfly option that matures 3 months from
today. It is built from two long calls
with exercise prices of $20 and $30, and two short calls with exercise prices
of $25. The current underlying price is
$25, the risk-free rate is 7.5% (annual compounding, actual/365 accrual), and
the dividend rate is 2.5% (annual compounding, actual/365 accrual).
Suppose we want to value the option assuming that
movements of the underlying asset are described by the Heston model with the
same parameters as above. There are again
two ways to do this with the FINCAD functions described above.
The most direct is by calling aaOption_Heston_eu_p
with the following inputs:
aaOption_Heston_eu_p
|
Argument |
Description |
Example Data |
Switch |
Comments |
|
price_u |
underlying price |
25 |
|
|
|
payoff_type |
payoff type |
13 |
butterfly |
|
|
strike_tbl |
strike table |
see below |
|
two strikes are needed to define the butterfly |
|
d_exp |
expiry date |
1-Apr-2007 |
|
3 months from today |
|
d_v |
value date |
1-Jan-2007 |
|
|
|
param_tbl |
Heston model parameters |
see above |
|
|
|
df_crv_std |
discount factor curve – risk free |
7.5% |
|
annual compounding and actual/365 accrual is assumed |
|
df_crv_hld |
discount factor curve – holding cost |
2.5% |
|
annual compounding and actual/365 accrual is assumed |
|
intrp |
interpolation method |
3 |
exponential |
not used for constant rates |
|
method |
numerical method |
1 |
Fast Fourier Transform |
|
|
method_param |
parameters for the numerical method |
see above |
|
|
|
stat |
list of statistics |
1..11 |
|
|
To specify the payoff of the strategy, we need two
exercise prices (those of the long calls) in the strike_tbl:
strike_tbl
|
exercise price 1 |
exercise price 2 |
|
20 |
30 |
To specify the Heston model, we take the same param_tbl
as in the example above.
With these inputs, the results are:
Results
|
Output Statistics |
Description |
Value |
|
1 |
fair value |
1.470601913 |
|
2 |
delta |
-0.058762781 |
|
3 |
gamma |
-0.029729461 |
|
4 |
theta |
0.008019512 |
|
5 |
sensitivity to initial volatility |
-0.02208953 |
|
6 |
sensitivity to long-term volatility |
-0.004398855 |
|
7 |
sensitivity to speed of mean reversion |
-0.094776047 |
|
8 |
sensitivity to volatility of volatility |
0.13369242 |
|
9 |
sensitivity to correlation |
0.157724038 |
|
10 |
rho of rate |
-0.006742795 |
|
11 |
rho of holding cost |
0.003534013 |
Alternatively, since the payoff of the butterfly
strategy is piecewise linear, we can check the above results by calling the
function aaOption_Heston_payoff_eu_p
with the following inputs:
aaOption_Heston_payoff_eu_p
|
Argument |
Description |
Example Data |
Switch |
Comments |
|
price_u |
underlying price |
50 |
|
|
|
payoff_tbl |
payoff table |
see below |
|
|
|
d_exp |
expiry date |
1-Jul-2007 |
|
|
|
d_v |
value date |
1-Jan-2007 |
|
6 months from today |
|
param_tbl |
Heston model parameters |
see above |
|
|
|
df_crv_std |
discount factor curve – risk free |
7.5% |
|
annual compounding and actual/365 accrual is assumed |
|
df_crv_hld |
discount factor curve – holding cost |
2.5% |
|
annual compounding and actual/365 accrual is assumed |
|
intrp |
interpolation method |
3 |
exponential |
not used for constant rates |
|
method |
numerical method |
1 |
Fast Fourier Transform |
|
|
method_param |
parameters for the numerical method |
see above |
|
|
|
stat |
list of statistics |
1…11 |
|
|
The following table, for example, specifies the
payoff of the European butterfly:
payoff_tbl
|
underlying |
payoff |
|
15 |
0 |
|
20 |
0 |
|
25 |
5 |
|
30 |
0 |
|
45 |
0 |
which gives rise to the following piecewise linear
payoff function displayed in Figure 2:

Figure 2
With these inputs, the results are as for aaOption_Heston_p
above.
Today is January 1, 2007.
Suppose we have observed the implied volatilities for a range of
European options on some underlying asset, with different exercise prices, and
maturing every two months for the next year.
We have seen a distinct dependence of volatility on both the strike and
maturity of the options. The current
underlying price is $65, the risk-free rate is 7.5% (annual compounding,
actual/365 accrual), and the dividend rate is 2.5% (annual compounding,
actual/365 accrual).
Suppose we are interested in whether this volatility surface
can be reproduced by assuming that the underlying asset undergoes a stochastic
volatility process described by the Heston model with the parameters as
specified in the param_tbl above. To this end, we would like to compute the
implied volatilities for a range of European options within the Heston
model. We can do this by calling the
FINCAD function aaOption_Heston_iv with the following inputs:
aaOption_Heston_iv
|
Argument |
Description |
Example Data |
Switch |
Comments |
|
price_u |
underlying price |
65 |
|
|
|
TK_tbl |
expiry dates and exercise prices |
see below |
|
maturity dates and strikes of the options for which we
want the implied volatility |
|
d_v |
value date |
1-Jan-2007 |
|
|
|
param_tbl |
Heston model parameters |
see above |
|
|
|
df_crv_std |
discount factor curve – risk free |
7.5% |
|
annual compounding and actual/365 accrual is assumed |
|
df_crv_hld |
discount factor curve – holding cost |
2.5% |
|
annual compounding and actual/365 accrual is assumed |
|
intrp |
interpolation method |
3 |
exponential |
not used for constant rates |
|
method |
numerical method |
1 |
Fast Fourier Transform |
|
|
method_param |
parameters for the numerical method |
see above |
|
|
The TK_tbl specifies the maturity dates and exercise
prices of the options in question. Let
us assume that this is given by:
TK_tbl
|
maturity |
exercise price |
|
1-Mar-2007 |
40 |
|
1-Mar-2007 |
45 |
|
1-Mar-2007 |
50 |
|
1-Mar-2007 |
55 |
|
1-Mar-2007 |
60 |
|
1-Mar-2007 |
65 |
|
1-Mar-2007 |
70 |
|
1-Mar-2007 |
75 |
|
1-Mar-2007 |
80 |
|
1-May-2007 |
40 |
|
1-May-2007 |
45 |
|
1-May-2007 |
50 |
|
1-May-2007 |
55 |
|
1-May-2007 |
60 |
|
1-May-2007 |
65 |
|
1-May-2007 |
70 |
|
1-May-2007 |
75 |
|
1-May-2007 |
80 |
|
1-Jul-2007 |
40 |
|
1-Jul-2007 |
45 |
|
1-Jul-2007 |
50 |
|
1-Jul-2007 |
55 |
|
1-Jul-2007 |
60 |
|
1-Jul-2007 |
65 |
|
1-Jul-2007 |
70 |
|
1-Jul-2007 |
75 |
|
1-Jul-2007 |
80 |
|
1-Sep-2007 |
40 |
|
1-Sep-2007 |
45 |
|
1-Sep-2007 |
50 |
|
1-Sep-2007 |
55 |
|
1-Sep-2007 |
60 |
|
1-Sep-2007 |
65 |
|
1-Sep-2007 |
70 |
|
1-Sep-2007 |
75 |
|
1-Sep-2007 |
80 |
|
1-Nov-2007 |
40 |
|
1-Nov-2007 |
45 |
|
1-Nov-2007 |
50 |
|
1-Nov-2007 |
55 |
|
1-Nov-2007 |
60 |
|
1-Nov-2007 |
65 |
|
1-Nov-2007 |
70 |
|
1-Nov-2007 |
75 |
|
1-Nov-2007 |
80 |
|
1-Jan-2008 |
40 |
|
1-Jan-2008 |
45 |
|
1-Jan-2008 |
50 |
|
1-Jan-2008 |
55 |
|
1-Jan-2008 |
60 |
|
1-Jan-2008 |
65 |
|
1-Jan-2008 |
70 |
|
1-Jan-2008 |
75 |
|
1-Jan-2008 |
80 |
With these inputs, the results are:
Results
|
maturity |
exercise price |
implied volatility |
|
1-May-2007 |
40 |
62.376% |
|
1-May-2007 |
45 |
59.732% |
|
1-May-2007 |
50 |
57.267% |
|
1-May-2007 |
55 |
54.993% |
|
1-May-2007 |
60 |
52.883% |
|
1-May-2007 |
65 |
51.002% |
|
1-May-2007 |
70 |
49.355% |
|
1-May-2007 |
75 |
48.031% |
|
1-May-2007 |
80 |
47.029% |
|
1-Jul-2007 |
40 |
62.439% |
|
1-Jul-2007 |
45 |
59.975% |
|
1-Jul-2007 |
50 |
57.714% |
|
1-Jul-2007 |
55 |
55.629% |
|
1-Jul-2007 |
60 |
53.730% |
|
1-Jul-2007 |
65 |
52.023% |
|
1-Jul-2007 |
70 |
50.545% |
|
1-Jul-2007 |
75 |
49.295% |
|
1-Jul-2007 |
80 |
48.311% |
|
1-Sep-2007 |
40 |
62.530% |
|
1-Sep-2007 |
45 |
60.252% |
|
1-Sep-2007 |
50 |
58.172% |
|
1-Sep-2007 |
55 |
56.274% |
|
1-Sep-2007 |
60 |
54.562% |
|
1-Sep-2007 |
65 |
53.036% |
|
1-Sep-2007 |
70 |
51.697% |
|
1-Sep-2007 |
75 |
50.565% |
|
1-Sep-2007 |
80 |
49.625% |
|
1-Nov-2007 |
40 |
62.658% |
|
1-Nov-2007 |
45 |
60.553% |
|
1-Nov-2007 |
50 |
58.647% |
|
1-Nov-2007 |
55 |
56.933% |
|
1-Nov-2007 |
60 |
55.387% |
|
1-Nov-2007 |
65 |
54.012% |
|
1-Nov-2007 |
70 |
52.801% |
|
1-Nov-2007 |
75 |
51.754% |
|
1-Nov-2007 |
80 |
50.865% |
|
1-Jan-2008 |
40 |
62.812% |
|
1-Jan-2008 |
45 |
60.867% |
|
1-Jan-2008 |
50 |
59.122% |
|
1-Jan-2008 |
55 |
57.551% |
|
1-Jan-2008 |
60 |
56.147% |
|
1-Jan-2008 |
65 |
54.891% |
|
1-Jan-2008 |
70 |
53.786% |
|
1-Jan-2008 |
75 |
52.815% |
|
1-Jan-2008 |
80 |
51.979% |
The Heston model gives rise to an implied
volatility surface, which can be visualized by plotting the above results
displayed in Figure 3:

Figure 3
For further details
on these strategies, and for the relevant P&L diagrams, see [9].
The call (bull) spread is a long call with exercise price
and a short call with
exercise price
.
The put (bear) spread is a short put with exercise price
and a long put with
exercise price
.
The risk
reversal (collar) is a long put with exercise price
and a short
call with exercise price
.
The seagull is a short put with exercise price
, a long put with exercise price
and a short call with exercise price
.
The straddle
is a long call and a long put, both with exercise price
.
The strangle is a long put with exercise price
and a long call
with exercise price
.
The guts is a long call with exercise price
and a long put
with exercise price
.
The butterfly is a long call (or put) with exercise price
, a long call (or put) with exercise price
and two short
calls (or puts) with exercise price
(midway between
and
). We assume
that the American butterfly consists of calls rather than puts.
The condor
is a long call (or put) with exercise
price
, a long call (or put) with exercise price
, a short call (or put) with exercise price
and a short
call (or put) with exercise price
(so that the exercise
prices of the two short options are equally spaced between
and
) . We assume
that the American condor consists of calls rather than puts.
The iron butterfly is a long straddle and a short strangle: a
short put with exercise price
, a long call and a long put with exercise price
and a short call with exercise price
.
The iron condor is a long strangle and a short strangle: a
short put with exercise price
, a long put with exercise price
, a long call
with exercise price
and a short call with exercise price
.
The box
is a long call and a short put with exercise
price
, and a long put and a short call with exercise price
.
The ratio call spread is
short calls with exercise price
and
long calls with exercise price
.
The ratio put spread is
long puts with exercise price
and
short puts with exercise price
.
The synthetic
forward is a long call and a short put, both with exercise price
.
The participating
forward (put) is a long call and some percentage (
) of a short put, both with exercise price
.
The participating
forward (call) is a long put and some percentage (
) of a short call, both with exercise price
.
The call ladder is a long call with exercise price
, a short call with exercise price
and a short call with exercise price
.
The put ladder is a short put with exercise price
, a short put with exercise price
and a long put with exercise price
.
The call spread vs. put
is a long call with exercise price
, a short call with exercise price
and a short put with strike
(usually, but not
always
).
The put spread vs. call is a short put with exercise price
, a long put with exercise price
and a short call with exercise price ![]()
(usually, but not always
).
The straddle vs. call is a long call and a long put with exercise
price
, and a short call with exercise price
(usually, but not
always
).
The straddle vs. put is a long call and a long put with exercise
price
, and a short put with exercise price
(usually, but not
always
).
[1]
Albrecher, H., Mayer, P., Schoutens, W. and
Tistaert, J. (2007) ‘The Little Heston Trap’, Wilmott,
January 2007, 83-92.
[6]
[9]
LIFFE Management and Administration (2002), LIFFE Options: a guide to trading strategies. Available on the Internet at http://www.euronext.com/file/view/0,4245,1626_53424_516478967,00.pdf
[11]
Rebonato, R. (1999) Volatility
and Correlation in the Pricing of Equity, FX and Interest-Rate Options,
Disclaimer
With respect to this document,
FinancialCAD Corporation (“FINCAD”) makes no warranty either express or
implied, including, but not limited to, any implied warranty of merchantability
or fitness for a particular purpose. In no event shall FINCAD be liable to
anyone for special, collateral, incidental, or consequential damages in
connection with or arising out of the use of this document or the information
contained in it. This document should not be relied on as a substitute for your
own independent research or the advice of your professional financial,
accounting or other advisors.
This information is subject to change
without notice. FINCAD assumes no responsibility for any errors in this
document or their consequences and reserves the right to make changes to this
document without notice.
Copyright
Copyright ©
FinancialCAD Corporation 2008. All rights reserved.