Double Barrier Options

Overview

Basic Concepts

The payoff of a simple European or American style call or put option depends only on the value of the asset, not on the path taken to get there. A double barrier option has a lower barrier and an upper barrier. These barriers “control” the option. Once either of these barriers is breached, the status of the option is immediately determined: either the option comes into existence if the barrier is an “in” or “knock in” barrier, or ceases to exist if the barrier is an “out” or “knock out” barrier.

Double barrier options of many types exist and it is best to try to understand these options by considering several key features.  The first feature is the underlying option which can be a:

·         European style, call or put option.

·         American style, call or put option.

·         Binary option, cash or nothing, asset or nothing depending on whether barrier is hit or not hit.

Other possibilities exist, for example an Asian option, but we will not consider these in this document (nor are the functions relevant for any other cases). 

The second feature is the combination of barriers.  The options can be:

·         A double knock-out (DKO) or in another name, one touch knock-out, Barrier Option
In this case, both the lower and upper barrier are knock-out barriers.  Initially the holder of the option owns a call or a put option.  If at any time, either barrier is breached, the option is lost (knocked-out).  In some cases, at knock-out, the holder may receive a rebate.

·         A double knock-in (DKI), or one touch knock-in, Barrier Option
In this case, if either barrier is breached, the holder of the barrier option is knocked-in to, i.e. now owns, a call or put option.  In cases where the option is never knocked-in, the holder may receive a rebate.

·         An upper barrier knock-out (UKO) double Barrier Option
In this case, if the upper barrier is breached prior to the lower barrier, the option holder is knocked out.  If the lower is breached prior to the upper or neither barrier is breached, the holder owns the option.

·         An upper barrier knock-out (UKO2) double Barrier Option
In this case, if the upper barrier is breached prior to the lower barrier, the option holder gets nothing.  If the lower barrier is breached prior to the upper, the holder receives an option.  If neither barrier is breached, the holder gets nothing.

·         A lower barrier knock-out (LKO) double Barrier Option
In this case, if the lower barrier is breached prior to the upper barrier, the option holder is knocked out.  If the upper barrier is breached prior to the lower or neither barrier is breached, the holder owns an option.

·         A lower barrier knock-out (LKO2) double Barrier Option
In this case, if the lower barrier is breached prior to the upper barrier, the option holder gets nothing.  If the upper barrier is breached prior to the lower, the holder receives an option.  If neither barrier is breached, the holder gets nothing.

·         An upper barrier knock-in (UKI) double Barrier Option
In this case, if the upper barrier is breached prior to the lower barrier, the option holder receives a call or put option.  If neither barrier is breached, the holder owns an option.

·         A lower barrier knock-in (LKI) double Barrier Option
same as a UKI, switch lower and upper.

·         A double touch knock-out Option (DTKO)
In this case, the holder initially holds a call or but option.  However, if both the upper and lower barriers are breached during the life of the option, the holder is knocked out.

·         A double touch knock-in Option (DTKI)
In this case, if both the upper and lower barriers are breached during the life of the option, the holder is knocked-in to a call or put option.

With all of these various barrier functions, the specification of rebates is possible.  These rebates (cash or asset amounts) can be specified if one or the other barrier is hit or if neither barrier is hit.  Using these rebate features is a way of including digital / binary payoffs that depend on barrier levels.

The final feature is the type of monitoring that is done at the barriers.  Several possibilities exist:

·         Each barrier is continuously monitored for the life of the option.

·         Each barrier is partially monitored for specific windows during the life of the option.  During these windows, the barriers are monitored continuously.

·         Each barrier is partially monitored for specific windows during the life of the option.  During these windows, the barriers are monitored at discrete dates.

·         Each barrier is discretely monitored at specific dates during the life of the option.

We also note the following convention: the fair value and risk statistics for options which have knocked out historically are zero, where “historically” includes the present day.  In the case of a standard DKO option for which the underlying price is less than the lower barrier value, or greater than the upper barrier value, all statistics are thus equal to zero, except the probability of breaching the barrier, which is equal to one.  For partial and/or discretely monitored barriers, the same will be true if the barriers exist, and are monitored, on the valuation date of the option.

Formulas & Technical Details

A Brief Overview of the Analytics

For the case of continuously monitored European-style double barrier options closed form solutions are available from the papers [8] and [5].  The formulas given in [5] are implemented in FINCAD XL.

For partial barrier options, where the barrier is continuously monitored, or for continuously monitored barriers involving American style options, a binomial tree is used.  As is well known, the key to using trees for pricing barrier options is to adjust the tree methodology near the barrier.  If no adjustment is made, the methodology will work, but the convergence will be painfully slow (i.e. it will require a lot of time steps to ensure an accurate solution).  We use a tree scheme where the value at the barrier nodes is adjusted (smoothed).  Our method leads to very good convergence results.  In Hull [4] pgs 480-1, he describes one possible adjustment scheme.

For discrete barrier options, where the barrier is monitored at a discrete instant in time, a different type of approach is used.  For all cases, even European style options, no efficient closed form solution is available (it is true that in some cases, one may be able to write the solution down as multiple integrals over each discrete sampling point, but these integrals cannot be efficiently calculated).  We use a binomial tree approach and again make an adjustment at the barrier points.  The adjustment is that derived by Steiner et al. [9].

We also suggest the reader looking at the papers Horfelt [2] and Broadie et al. [1] for more discussion and examples of discrete barrier options and more references therein.

The functions aaBarrier_dbl_in_part_2win and aaBarrier_dbl_out_part_2win allow for 2 windows with different volatilities, rates and holding costs.  From the value date up to the switch date, volatility1, rate1 and holding cost1 are used and from the switch date to the expiry date, volatility2, rate2 and holding cost2 are used.

Formulas for the payoffs of double barrier options

For clarity we write down the formulas for the payoff of the double barrier options described above. Let and be the first hitting times of the upper barrier and the lower barrier, respectively.  For a discrete barrier option they are the hitting times at the given discrete time points. If an option has windows, they represent the hitting times within the given windows. Let  be a strike price,  the option expiry time, and  the underlying price at time . Denote by  the indicator of an event , which equals 1 if  is true and 0 otherwise. Set  to be 1 if the option is a call and -1 if it is a put.  Recall that the notations and mean “and” and “or”, respectively. Here are payoff formulas at an exercise time  of the double barrier options described above:

DKO:   

DKI:     

UKO:   

UKI:     

LKO     

LKI:     

For European binary double barrier options let denote the cash amount for a cash-based binary double barrier option or the underlying price for an asset-based option.  Here are the payoff formulas:

DKO:   

DKI:     

UKO:   

UKI:     

LKO:    

LKI:     

 

FINCAD Functions

FINCAD provides functions to deal with all of the above combinations and to help search for the correct function, the tables below are helpful.

Double Barrier Options

Option Style

Barrier Type

Monitoring Type

Continuous

Partial Barrier (Windows)

Discrete

European

 

DKO

aaBarrier_dbl(), aaBarrier_dbl_oneTouch()

aaBarrier_dbl_out_part(),  aaBarrier_dbl_out_part_2win()

aaBarrier_dbl_out_dis()

American

 

DKO

aaBarrier_dbl()

aaBarrier_dbl_out_part(), aaBarrier_dbl_out_part_2win()

aaBarrier_dbl_out_dis()

European

 

DKI

aaBarrier_dbl_oneTouch(),   also use aaBarrier_dbl_in_part(): set the window to the life of the option and ensure the monitoring frequency is set to continuous (monitor_freq=10)

aaBarrier_dbl_in_part(), aaBarrier_dbl_in_part_2win()

aaBarrier_dbl_in_dis()

American

 

DKI

aaBarrier_dbl_in_part(): set the window to the life of the option and ensure the monitoring frequency is set to continuous (monitor_freq=10)

aaBarrier_dbl_in_part(), aaBarrier_dbl_in_part_2win()

aaBarrier_dbl_in_dis()

European

 

UKO, LKO

aaBarrier_dbl_mix(), or can use aaBarrier_dbl_mix_part() combined with a DKO.

aaBarrier_dbl_mix_part() combined with a DKO.

aaBarrier_dbl_mix_dis() combined with a DKO

European

 

UKO2, LKO2

aaBarrier_dbl_mix() less a DKO, or can use aaBarrier_dbl_mix_part().

aaBarrier_dbl_mix_part()

aaBarrier_dbl_mix_dis()

American

 

UKO, LKO

aaBarrier_dbl_mix_part() combined with a DKO.

aaBarrier_dbl_mix_part() combined with a DKO.

aaBarrier_dbl_mix_dis() combined with a DKO

American

 

UKO2, LKO2

aaBarrier_dbl_mix_part()

aaBarrier_dbl_mix_part()

aaBarrier_dbl_mix_dis()

European

 

UKI, LKI

aaBarrier_dbl_mix(), aaBarrier_dbl_mix_part(), possibly combine with DKO

aaBarrier_dbl_mix_part() possibly combine with DKO

aaBarrier_dbl_mix_dis(), possibly combine with DKO

American

 

UKI, LKI

aaBarrier_dbl_mix_part(), possibly combine with DKO

aaBarrier_dbl_mix_part() possibly combine with DKO

aaBarrier_dbl_mix_dis(), possibly combine with DKO

European

 

DTKO

aaBarrier_dbl_dblTouch()

 

 

European

 

DTKI

aaBarrier_dbl_dblTouch()

 

 

Binary Double Barrier Options

Option Style

Barrier Type

Monitoring type

Continuous

Partial Barrier (Windows)

Discrete

European

DKO

aaBarrier_dbl_bin() aaBarrier_dbl_bin_oneTouch()

Use rebate features in corresponding functions listed above

 Use rebate features in corresponding functions listed above

European

DKI

aaBarrier_dbl_bin_oneTouch()

 s/a

 s/a

European

UKO

aaBarrier_dbl_bin_mix()

 s/a

 s/a

European

LKO

aaBarrier_dbl_bin_mix()

 s/a

 s/a

European

UKI

aaBarrier_dbl_bin_mix()

 s/a

 s/a

European

 

LKI

aaBarrier_dbl_bin_mix()

 s/a

 s/a

European

DTKO

aaBarrier_dbl_bin_dblTouch()

 s/a

 s/a

European

DTKI

aaBarrier_dbl_bin_dblTouch()

 s/a

 s/a

Some of the above functions listed don’t take in rebates. To calculate rebate values for these functions use the following function:  aaBarrier_dbl_hit_cash()

Other types of Double Barrier Options:

Quanto Options:  aaQuanto_Barrier_dbl(),aaQuanto_Barrier_dbl_bin()

FX Specific Options:  aaFX_Barrier_dbl(), aaFX_Barrier_dbl_bin()

In the above listed functions, seven are based on “closed form” formulas of European style double barrier options.  These are aaBarrier_dbl_mix(), aaBarrier_dbl_oneTouch(), aaBarrier_dbl_dblTouch(), aaBarrier_dbl_bin_mix(), aaBarrier_dbl_bin_oneTouch(), aaBarrier_dbl_bin_dblTouch() and aaBarrier_dbl_hit_cash().  For more details see [5].  All other functions are implemented using tree-based numerical methods.  In all of these tree based algorithms, corrections are made to account for the effect of the barriers (and the numerical errors these can introduce).  For more details see, for example, [9], [2], [1].

 

For convenience of presenting the inputs of the functions their names with input parameters are listed again in the following:

 

aaBarrier_dbl(d_v, d_exp, price_u, ex, bar1, bar2, rebate_up, rebate_dn, vlt, rate_ann, cost_hldg, option_type, optimize, option_style, stat)

 

aaBarrier_dbl_bin(d_v, d_exp, price_u, ex, bar1, bar2, rebate_exp, rebate_up, rebate_dn, vlt, rate_ann, cost_hldg, option_type, optimize, stat)

 

aaBarrier_dbl_in_dis(d_v, d_exp, price_u, ex, bar_DKI_tbl, rebate, vlt, rate_ann, cost_hldg, option_type, iter, option_style, knockin, stat)

 

aaBarrier_dbl_out_dis(d_v, d_exp, price_u, ex, bar_DKO_tbl, vlt, rate_ann, cost_hldg, option_type, iter, option_style, KOStatus, stat)

 

aaBarrier_dbl_in_part(d_v, d_exp, price_u, ex, bar_DKI_tbl, monitor_freq, rebate, vlt, rate_ann, cost_hldg, option_type, iter, option_style, knockin, hl, d_ knockin, stat)

 

aaBarrier_dbl_out_part(d_v, d_exp, price_u, ex, bar_dbl_part_tbl, monitor_freq, vlt, rate_ann, cost_hldg, option_type, iter, option_style, KOStatus, hl, d_rul, stat)

 

aaBarrier_dbl_in_part_2win(d_v, d_exp, price_u, ex, bar_DKI_tbl, monitor_freq, rebate, switch_date, vlt1, rate_ann1, cost_hldg1, vlt2, rate_ann2, cost_hldg2, option_type, iter, option_style, knockin, hl, d_knockin, stat)

 

aaBarrier_dbl_out_part_2win(d_v, d_exp, price_u, ex, bar_dbl_part_tbl, monitor_freq, switch_date, vlt1, rate_ann1, cost_hldg1, vlt2, rate_ann2, cost_hldg2, option_type, iter, option_style, KOStatus, hl, d_rul, stat)

 

The functions aaBarrier_dbl_in_part_2win and aaBarrier_dbl_out_part_2win allow for 2 windows with different volatilities, rates and holding costs.  From the value date up to the switch date, volatility1, rate1 and holding cost1 are used and from the switch date to the expiry date, volatility2, rate2 and holding cost2 are used.

 

aaBarrier_dbl_mix_dis(d_v, d_exp, price_u, ex, bar_DKI_tbl, bar_dbl_mix_type, vlt, rate_ann, cost_hldg, option_type, iter, option_style, barMixStatus, stat)

 

aaBarrier_dbl_mix_part(d_v, d_exp, price_u, ex, bar_DKI_tbl, monitor_freq, bar_dbl_mix_type, vlt, rate_ann, cost_hldg, option_type, iter, option_style, barMixStatus, hl, d_rul, stat)

 

aaBarrier_dbl_mix(d_v, d_exp, price_u, ex, bar1, bar2, hit_order, bar_type, vlt, rate_ann, cost_hldg, option_type, stat)

 

aaBarrier_dbl_onetouch(d_v, d_exp, price_u, ex, bar1, bar2, bar_type, vlt, rate_ann, cost_hldg, option_type, stat)

 

aaBarrier_dbl_dbltouch(d_v, d_exp, price_u, ex, bar1, bar2, bar_type, vlt, rate_ann, cost_hldg, option_type, dblTouch_stat, stat)

 

aaBarrier_dbl_bin_mix(d_v, d_exp, price_u, ex, bar1, bar2, hit_order, bar_type, payoff, cash, vlt, rate_ann, cost_hldg, option_type, stat)

 

aaBarrier_dbl_bin_onetouch(d_v, d_exp, price_u, ex, bar1, bar2, bar_type, payoff, cash, vlt, rate_ann, cost_hldg, option_type, stat)

 

aaBarrier_dbl_bin_dbltouch(d_v, d_exp, price_u, ex, bar1, bar2, bar_type, payoff, cash, vlt, rate_ann, cost_hldg, option_type, dblTouch_stat, stat)

 

aaBarrier_dbl_bin_hit_cash(d_v, d_exp, price_u, bar1, bar2, rebate_upbarhit, rebate_dnbarhit, rebate_nobarhit, vlt, rate_ann, cost_hldg, stat)

 

aaQuanto_Barrier_dbl(d_v, d_exp, price_ufor, ex_for, FX_fix, bar1, bar2, rebate_up, rebate_dn, vlt_u, vlt_FX, corr, rate_for_ann, rate_dom_ann, cost_hldg, option_type, optimize, option_style, stat)

 

aaQuanto_Barrier_dbl_bin(d_v, d_exp, price_ufor, ex_for, FX_fix, bar1, bar2, rebate_exp, rebate_up, rebate_dn, vlt_u, vlt_FX, corr, rate_for_ann, rate_dom_ann, cost_hldg, option_type, optimize, stat)

 

aaFX_Barrier_dbl(d_v, d_exp, FX_rate, FX_ex, FX_bar1, FX_bar2, princ_curr, FX_unit, rebate_up, rebate_dn, vlt, intrp, df_prim, df_sec, option_type, optimize, option_style, asset_type, amount, stat)

 

aaFX_Barrier_dbl_bin(d_v, d_exp, FX_rate, FX_ex, FX_bar1, FX_bar2, princ_curr, FX_unit, rebate_exp, rebate_up, rebate_dn, vlt, intrp, df_prim, df_sec, option_type, optimize, asset_type, amount, stat)

Root Finding Functions for Double Barrier Options

Most of these FINCAD functions have their inverse (root finding) versions:  

aaBarrier_dbl_ix()

aaBarrier_dbl_bin_ix()

aaBarrier_dbl_mix_ix()

aaBarrier_dbl_oneTouch_ix()

aaBarrier_dbl_dblTouch_ix()

aaBarrier_dbl_bin_mix_ix()

aaBarrier_dbl_bin_oneTouch_ix()

aaBarrier_dbl_bin_dblTouch_ix()

aaBarrier_dbl_bin_hit_cash_ix()

These “_ix” (implied x, where x is any input parameter) functions find the value of any input parameter for a given value of an output statistic. More details can be found in the General Root Finding_ix Functions FINCAD Math Reference document.

 

Description of Inputs

Input Argument

Description

d_exp

Expiry date of the option

ex

Strike price

price_u

Current value of an underlying asset

bar1

Lower barrier value (less than price_u)

bar2

Upper barrier value (larger than price_u)

rebate_up

Cash amount paid when the upper barrier is breached

rebate_dn

Cash amount paid when the lower barrier is breached

rebate_exp

Cash amount paid when no barrier is breached

rebate

A rebate

vlt

The annualized volatility of the underlying asset.

rate_ann,

cost_hldg

Also denoted rate1 and rate2, respectively.  These rates are quoted on an annually compounded, Act / 365 (fixed) basis.

1.       If the underlying is an equity, rate1 is the relevant risk-free rate and rate2 is the annualized dividend yield.

2.       If the underlying is a forward or futures price, rate2 should be set equal to the risk-free rate1.

3.       If the underlying is an FX (foreign exchange) rate, and quoted on a domestic per foreign basis, rate1 should be the risk-free domestic rate and rate2 the risk-free foreign rate.

4.       If the underlying is an FX rate, and quoted on a foreign per domestic basis, rate1 should be the risk-free foreign rate and rate2 the risk-free domestic rate.

5.       If the underlying is a commodity, then rate2 should be set to the annualized holding cost of the commodity, including storage and insurance costs as well as marginal convenience value.

option_type

The type of option:

1 = call,

2 = put,

3 = call and put.  The third option type “call and put” is issued only in the function aaBarrier_dbl_bin() (This is the binary barrier option with a payoff independent of the strike price).

optimize

Level of optimization in tree building: 1 = level 1 (low),…, 4 = level 4 (high).  If the input value is more than 4, then the value will be treated as the number of time steps (minimum =10)

option_style

The style of the option:

1 = European,

2 = American

stat

Indicator of risk statistics.  See outputs in the examples or the function reference pages.

bar_DKI_tbl

In the functions aaBarrier_dbl_in_dis and aaBarrier_dbl_mix_dis it is a three column table (effective date, lower barrier, upper barrier).  In the functions aaBarrier_dbl_in_part and aaBarrier_dbl_mix_part it is a four column table (effective date, terminating date, lower barrier, upper barrier).

bar_DKO_tbl

A five column table (date, lower barrier, rebate if lower barrier is hit first, upper barrier, rebate if upper barrier is hit first)

bar_dbl_part_tbl

A six column table (effective date, terminating date, lower barrier, rebate if lower barrier is hit first, upper barrier, rebate if upper barrier is hit first)

monitor_freq

Barrier monitoring frequency

iter

Number of time steps use in binomial tree

knockin

Option status - a switch:

1 = option has not been knocked in,

2 = option has been knocked in (a vanilla option)

KOStatus

Option knock-out status, a switch:

1 = option is alive,

2 = option has been knocked out.

bar_dbl_mix_type

Type of mixed barrier - a switch:

1 = upper barrier knock-in, lower barrier knock-out,

2 = lower barrier knock-in, upper barrier knock-out

barMixStatus

Mixed barrier option status:

1 = no barrier has been hit,

2 = option has been knocked in,

3 = option has been knocked out.

hit_order

Barrier hitting order - a switch:

1 = upper barrier is hit before the lower barrier is hit,

2 = lower barrier is hit before the upper barrier is hit.

bar_type

Type of barriers - a switch:

1 = knock-in barriers,

2 = knock-out barriers.

dblTouch_stat

Status of a double touch double barrier option - a switch:

1 = no barrier has been hit,

2 = upper barrier has been hit, but lower barrier has not been hit (a single lower barrier option),

3 = lower barrier has been hit, but upper barrier has not been hit (a single upper barrier option),

4 = both barriers have been hit (a vanilla option for a knock-in option and nothing for a knock-out option).

payoff

Type of payoff - a switch:

1 = cash,

2 = asset

price_ufor

Price of foreign asset

ex_for

Exercise price of foreign asset

FX_fix

Fixed FX rate

vlt_FX

Volatility of FX rate

corr

Instant correlation of FX rate (domestic per one unit of foreign currency) and price of foreign asset

FX_rate

Spot FX rate

FX_ex

Exercise price of FX rate

FX_bar1

Lower barrier value of FX rate

FX_bar2

Upper barrier value of FX rate

princ_curr

Currency of the principal amount - a switch:

1 = primary currency,

2 = secondary currency

FX_unit

Unit of the spot FX rate and exercise FX rate - a switch:

1 = secondary currency per one unit of primary currency,

2 = primary currency per one unit of secondary currency.

 

Description of Outputs

Output Statistic

Description

fair value

The fair value of the option.

delta

The rate of change in the fair value of the option per one unit change in the current value of the underlying asset.  This is the derivative of the option price with respect to the underlying current value.

gamma

The rate of change in the value of delta per one unit change in the current value of the underlying asset.  This is the second derivative of the option price with respect to the underlying current value.

theta

The rate of change in the fair value of the option per one day decrease of 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.

vega

The rate of change in the fair value of the option per 1% change in volatility.  This is the derivative of the option price with respect to volatility, divided by 100.

rho of rate

The rate of change in the fair value of the option per 1% change in the risk-free rate, rate_ann.  This is the derivative of the option price with respect to the risk-free rate, divided by 100.

rho of holding cost rate

The rate of change in the fair value of the option per 1% change in the holding cost, cost_hldg.  This is the derivative of the option price with respect to the holding cost, divided by 100.  If the underlying is futures, this statistic is not available.

value of upper rebate

The present value of the upper barrier rebate.

value of lower rebate

The present value of the lower barrier rebate.

probability of not hitting a barrier

The probability (the risk neutral probability) that the underlying does not hit a barrier during the option’s lifetime.

probability of hitting lower barrier (early exercise considered)

The probability (the risk neutral probability) that, when early exercise is taken into consideration, during the life of the option the underlying price reaches the lower barrier before it reaches the upper barrier.  For European style options early exercise is not allowed and this value is the same as probability of hitting upper barrier.  This output is available only for the function aaBarrier_dbl(). 

probability of hitting upper barrier (early exercise considered)

The same as above but for the upper barrier.

probability of hitting upper barrier

The probability (the risk neutral probability) that during the life of the option the underlying price hits the upper barrier before it hits the lower barrier.  Note that this number is not adjusted for possible early exercise

probability of hitting lower barrier

The same as above but for the lower barrier.

probability of early exercise

The probability (the risk neutral probability) that the option will be exercised early.

 

*       Remark:  There are other types of outputs in the FX or quanto specific functions.  Their meaning is self-explanatory from their names.

 

For details about the calculation of Greeks, see the Greeks of Options on non-Interest Rate Instruments FINCAD Math Reference document.

 

Examples

Context specific examples are presented for American-style options on stocks, commodity futures and foreign exchange rates. For options involving different underlyings, see the remarks following these examples.

Example 1:  American Double Knock-out Option on Index

Consider an American style double barrier put option on an index.  The stock has a spot value of 910.  The strike price of the option is 925 and the lower and upper barriers are 850 and 1000, respectively.  The rebate when the lower barrier is breached is 3 and the rebate when the upper barrier is breached is 30.  Today is Dec. 3, 2003.  The expiration date of the option is
Dec. 1, 2004.  Suppose the relevant risk-free interest rate (annually compounded, Actual/365) is 4% and the dividend payout rate over the life of the option (annually compounded, Actual/365) is 1%.  Suppose the annual volatility of the index is 12%.  Using the function aaBarrier_dbl() we obtain the following results:

aaBarrier_dbl

Argument

Description

Example Data

Switch

d_v

value (settlement) date

3-Dec-2003

 

d_exp

expiry date

1-Dec-2004

 

price_u

underlying price

910

 

ex

exercise price

925

 

bar1

lower barrier value

850

 

bar2

upper barrier value

1000

 

rebate_up

payout if upper barrier is hit

30

 

rebate_dn

payout if lower barrier is hit

3

 

vlt

volatility

0.12

 

rate_ann

rate – annual – Actual/365

0.04

 

cost_hldg

holding – annual – Actual/365

0.01

 

option_type

option type

2

put

optimize

number of time steps

2

optimization level 2

option_style

style of option

2

American

stat

list of statistics

1…14

 

Results

Statistics

Description

Value

1

fair value

48.8504799

2

delta

-0.30905727

3

gamma

0.002838768

4

theta

-1.86E-02

5

vega

1.463293734

6

rho of rate

-1.10406092

7

rho of cost of holding

0.992558754

8

value of upper rebate

12.40817322

9

value of lower rebate

0

10

probability of hitting lower barrier (early exercise considered)

0.420111057

11

probability of hitting upper barrier (early exercise considered)

0

12

probability of hitting upper barrier 

0.43342468

13

probability of hitting lower barrier 

0.482333503

14

probability of early exercise

0.545128181

Example 2:  American Double Knock-in Option on Index

Suppose in Example 1 the option is an American knock-in double barrier option. Suppose also the rebate when no barrier is breached during the option’s life is 1. Call the function aaBarrier_dbl_in_part with continuous barrier monitoring (barrier monitoring frequency = 10) and double barrier knock-in table:

Double Barrier Knock-in Table

effective date

terminating date

lower barrier

upper barrier

3-Dec-2003

1-Dec-2004

850

1000

to get the following results:

aaBarrier_dbl_in_part

Argument

Description

Example Data

Switch

d_v

value (settlement) date

3-Dec-2003

 

d_exp

expiry date

1-Dec-2004

 

price_u

underlying price

910

 

ex

exercise price

925

 

bar_DKI_tbl

double barrier knock-in table

see above

 

monit_freq

barrier monitoring frequency

10

continuous

rebate

rebate if barrier is not hit

0

 

vlt

volatility

0.12

 

rate_ann

rate – annual – Actual/365

0.04

 

cost_hldg

holding cost – annual – Actual/365

0.01

 

option_type

option type

2

put

iter

number of time steps

500

 

option style

style of option

2

American

knockin

option status

1

option has not been knocked-in

hl

holiday list

0

 

d_rul

business day convention

1

no adjustment

stat

list of statistics

1…12

 

Results

Statistics

Description

Value

1

fair value per barrel

39.52502218

2

Delta

-0.49371315

3

Gamma

0.005078237

4

theta

-0.04267492

5

Vega

3.90433997

6

rho of rate

-2.59213374

7

rho of holding cost

2.784928351

8

value of  rebate

0

9

probability of not hitting any barrier

0.084415011

10

probability of hitting upper barrier (early exercise considered)

0.43371672

11

probability of hitting lower barrier (early exercise considered)

0.481868269

12

fair value of a vanilla option

40.86002039

 

Example 3:  European-style Lower Barrier Knock-out Option on Commodity Futures

A trader thinks that crude oil futures price will more likely go up and unlikely go down much in the coming months.  He decides to buy a European-style lower barrier knock-out double barrier call option on 6 month's crude oil futures.  With this option, when the futures’ price hits the upper barrier before hitting the lower barrier or it does not hit the lower barrier at all during the option’s life time, he will be knocked into a vanilla call option; otherwise, he will walk away with nothing.  Suppose the size of the option is 10000 barrels and the strike price is $25 per barrel.  The upper barrier is set to be $28 and the lower barrier $23.  The current price of 6 month's crude oil futures per barrel is $24.  Today's date is June 3, 2004.  The expiration date of the option is Oct 1, 2004.  Suppose the relevant risk-free interest rate over the life of the option is 4%, (annually compounded, Actual/365), and annual volatility of the futures price is 20%.  Using the function aaBarrier_dbl_mix() we obtain the following results:

aaBarrier_dbl_mix

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Jun-2004

 

d_exp

expiry date

1-Oct-2004

 

price_u

underlying price

24

 

ex

exercise price

25

 

bar1

lower barrier value

23

 

bar2

upper barrier value

28

 

hit_order

barrier hitting order

2

lower barrier first

bar_type

type of barrier

2

knock out

vlt

volatility

0.2

 

rate_ann

rate – annual – Actual/365

0.04

 

cost_hldg

holding cost – annual – Actual/365

0.04

 

option_type

option type

1

call

stat

list of statistics

1…10

 

Results

Statistics

Description

Value

1

fair value per barrel

0.494322009

2

delta

0.513901321

3

gamma

0.056054491

4

theta

-1.73E-03

5

vega

0.02087684

6

rho of rate

0.020635521

7

rho of cost of holding

-0.02215435

8

probability of not hitting any barrier 

0.133155465

9

probability of hitting upper barrier 

0.725553901

10

probability of hitting lower barrier 

0.858709365

Fair value for 1000 barrels = 10000×fair value per barrel = 4943 ($).

Instead of buying a double barrier option the trader could buy a vanilla call option.  To find out how much the trader can save, call aaBSG to calculate the fair value of the vanilla call option as 10000*0.69 = 6900 ($).  Hence he can save:

6900 – 4943 = 1957 ($)

 

Example 4:  American Partial Upper Barrier Knock-in Option on Futures

Suppose in example 3 the trader wants to hedge his oil price for the summers of the coming three years.  For this he decides to buy an American partial upper barrier knock-in call option.  For this option the 6 month futures price hits the predetermined upper barrier before hitting the lower barrier in certain time window.  The option will be knocked into a vanilla American call option; otherwise, the option will expire worthless.  The option’s maturity is 1-Oct-2006 and the three barrier windows are set as follows

Double Barrier Table

effective date

terminating date

lower barrier

upper barrier

1-Jun-2004

1-Oct-2004

22

28

1-Jun-2005

1-Oct-2005

23

29

1-Jun-2006

1-Oct-2006

23

30

Call the function aaBarrier_dbl_mix_part to get the following results:

aaBarrier_dbl_mix_part

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Jun-2004

 

d_exp

expiry date

1-Oct-2006

 

price_u

underlying price

24

 

ex

exercise price

25

 

bar_DKI_tbl

double barrier table

 see above

 

monit_freq

barrier monitoring frequency

10

 

bar_dbl_mix_type

type of mixed barrier

1

upper knock-in, lower knock-out

rebate

rebate

0

 

vlt

volatility

0.2

 

rate_ann

rate – annual – Actual/365

0.04

 

cost_hldg

holding cost – annual – Actual/365

0.04

 

option_type

option type

1

call

Iter

number of time steps

500

 

option_style

option style

2

American

barMixStatus

knock-in status

1

option has not touched either barrier (default)

hl

holiday list

0

 

d_rul

business day convention

1

next good business day

stat

list of statistics

1…12

 

Results

Statistics

Description

Value

1

fair value per barrel

1.477289693

2

delta

0.739864895

3

gamma

0.005077705

4

theta

-1.5521E-06

5

vega

0.061642165

6

rho of rate

0.12411354

7

rho of holding cost

-0.13053542

8

value of  rebate

0

9

probability of not hitting any barrier

0.018417485

10

probability of hitting upper barrier

0.282251376

11

probability of hitting lower barrier

0.69933114

12

fair value of a vanilla option

2.3330944

The premium that the trader has to pay is then:

10000×1.4773 = 14773.

 

The value of the corresponding vanilla call option (use aaBSG) is:

10000×2.3331 = 23331.

 

Thus by buying a double barrier option instead of a vanilla option he can save

23331 – 14773 = 8558 ($).

 

Example 5:  Binary double touch knock-in option on Foreign Exchange Rate

Consider a binary double touch knock-in put option on the FX rate £/$, sterling pounds per unit of US dollar.  The current value of the FX rate is 0.61.  The strike price is 0.62 and the lower and upper barriers of the option are set to be 0.55 and 0.70, respectively.  The cash payment at the expiration, when none of the barriers is touched and the FX rate is below the strike, is 0.1. T he current risk-free interest rate of sterling (annually compounded, Actual/365 (fixed)) is 4% and that of the U.S. dollar is 2%.  Today’s date is Dec. 3, 2003. The expiration date of the option is Dec. 1, 2004 and none of the barriers has been breached since the inception of option.  Suppose the annual volatility of the exchange rate is 12%.  Using the function aaBarrier_dbl_bin_dblTouch() we obtain the following results:

aaBarrier_dbl_bin_dblTouch

Argument

Description

Example Data

Switch

d_v

value (settlement) date

3-Dec-2003

 

d_exp

expiry date

1-Dec-2004

 

price_u

underlying price

0.61

 

ex

exercise price

0.62

 

bar1

lower barrier value

0.55

 

bar2

upper barrier value

0.7

 

bar_type

barrier type

2

knock out

payoff

cash or asset

cash

 

cash

cash payment

0.1

 

vlt

volatility

0.12

 

rate_ann

rate – annual – Actual/365

0.04

 

cost_hldg

holding cost – annual – Actual/365

0.02

 

option_type

option type

2

put

dblTouch_stat

barrier touch status

1

no barrier is hit

stat

list of statistics

1…12

 

Results

Statistics

Description

Value

1

fair value

0.049245606

2

delta

-0.530427

3

gamma

0.35275304

4

theta

1.97019E-05

5

vega

-8.0671E-05

6

rho of rate

-0.00352155

7

rho of holding cost

0.0031203

8

value of  rebate

0.2765293

9

probability of not hitting any barrier

0.352669089

10

probability of hitting upper barrier (early exercise considered)

0.629198353

11

probability of hitting lower barrier (early exercise considered)

0.049245606

12

fair value of a vanilla option

0.049245606

Suppose the option is to sell $100000.  Then the cost is:

100000 × 0.049245606= 4924.56 (£) = 8073.05 (£).

 

Tip:  The selection of the appropriate FX rate in valuing an option on FX rates can be confusing. The following table lists all of the different scenarios in the sterling/dollar FX market. One can simply follow this example in his/her modeling.

buy/sell

amount

option type

FX rate

cost of option

sell

100 $

put

£/$

100×option value (£)

buy

100 $

call

£/$

100×option value (£)

buy

50 £

call

$/£

50×option value ($)

sell

50 £

put

$/£

50×option value ($)

 

*       Note:  For double knock-out or binary double knock-out options it is more convenient to use one of the functions aaFX_barrier_dbl and aaFX_barrier_dbl_bin.

 

Remarks on other examples

Commodities

Most options on commodities are options on commodity futures. However one can also use the above functions to value options on commodity spot prices. To use these functions one should identify first the rates of storage cost, insurance cost and convenience yield of the underlying commodity and then combine these rates to define the rate of the cost of holding of the commodity. This value is used as the value of the parameter cost_hldg.

Stocks modeled using continuous dividend payout rates

Valuation of options on stocks modeled using continuous dividend payout rates is similar to the valuation of options on indices.

Stock paying discrete dividends

Stock paying discrete dividends can be modeled approximately as stocks paying continuous dividends by converting the discrete dividend payout to a continuous rate.

 

References

[1]          Broadie, M., Glasserman, P. and Kou, S. G., (1999), ‘Connecting discrete and continuous path-dependent options’, Finance and Stochastics, 3, pp. 55-82.

[2]          Horfelt, P., (2003), ‘Extension of the corrected barrier approximation by Broadie, Glasserman, and Kou’, Finance and Stochastics, 7, pp. 231-243.

[3]          Hudson, M., (March 1991), ‘The Value in Going Out’, Risk.

[4]          Hull, J. C., (1999), Options, Futures, and Other Derivatives, 4th ed., Upper Saddle River, Prentice Hall.

[5]          Luo, L. (2001) ‘Various types of double barrier options’, Journal of Computational Finance, 4, pp. 125-138.

[6]          Rubinstein, M. and Reiner, E., (October 1991), ‘Unscrambling the Binary Code’, Risk, pp. 75-83.

[7]          Rubinstein, M. and Reiner, E., (Sept. 1991), ‘Breaking Down the Barriers’, Risk, pp. 28-35.

[8]          Sidenius, J., (1998), ‘Double barrier options: valuation by path counting’, Journal of Computational Finance, 1 pp. 63-79.

[9]          Steiner, M., WallMeier, M. and Hafner, R., (1999), ‘Pricing near the barrier: the case of discrete knock-out options’, ‘Journal of Computational Finance,’ 3 pp. 69-90.

 

 

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.