# dblbarrierbybls

Price European double barrier options using Black-Scholes option pricing model

## Syntax

``Price = dblbarrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,BarrierSpec,Barrier)``
``Price = dblbarrierbybls(___,Name,Value)``

## Description

example

````Price = dblbarrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,BarrierSpec,Barrier)` calculates European double barrier option prices using the Black-Scholes option pricing model and the Ikeda and Kunitomo approximation.```

example

````Price = dblbarrierbybls(___,Name,Value)` specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax.```

## Examples

collapse all

Compute the price of a European for a double knock-out (down and out-up and out) call option using the following data:

```Rate = 0.05; Settle = '01-Jun-2018'; Maturity = '01-Dec-2018'; Basis = 1;```

Define a `RateSpec`.

`RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, 'EndDates', Maturity,'Rates', Rate, 'Compounding', -1, 'Basis', Basis);`

Define a `StockSpec`.

```AssetPrice = 100; Volatility = 0.25; StockSpec = stockspec(Volatility, AssetPrice);```

Define the double barrier option.

```LBarrier = 80; UBarrier = 130; Barrier = [UBarrier LBarrier]; BarrierSpec = 'DKO'; OptSpec = 'Call'; Strike = 110;```

Compute price of option using flat boundaries.

`PriceFlat = dblbarrierbybls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity, BarrierSpec, Barrier)`
```PriceFlat = 1.1073 ```

Compute price of option using two curved boundaries.

```Curvature = [0.05 -0.05]; PriceCurved = dblbarrierbybls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity, BarrierSpec, Barrier, 'Curvature', Curvature)```
```PriceCurved = 1.4548 ```

## Input Arguments

collapse all

Interest-rate term structure (annualized and continuously compounded), specified by the `RateSpec` obtained from `intenvset`. For information on the interest-rate specification, see `intenvset`.

Data Types: `struct`

Stock specification for the underlying asset, specified by the `StockSpec` obtained from `stockspec`.

`stockspec` handles several types of underlying assets. For example, for physical commodities the price is `StockSpec.Asset`, the volatility is `StockSpec.Sigma`, and the convenience yield is `StockSpec.DividendAmounts`.

Data Types: `struct`

Definition of the option as `'call'` or `'put'`, specified as a `NINST`-by-`1` cell array of character vectors or string array with values `'call'` or `'put'` or `"call"` or `"put"`.

Data Types: `char` | `cell` | `string`

Option strike price value, specified as an `NINST`-by-`1` matrix of numeric values, where each row is the schedule for one option.

Data Types: `double`

Settlement or trade date for the double barrier option, specified as an `NINST`-by-`1` matrix using serial date numbers, date character vectors, or datetime objects.

Data Types: `double` | `char` | `datetime`

Option exercise dates, specified as an `NINST`-by-`1` matrix of serial date numbers, date character vectors, or datetime objects.

### Note

For a European option, the option expiry date has only one `ExerciseDates` value, which is the maturity of the instrument.

Data Types: `double` | `char` | `datetime`

Double barrier option type, specified as an `NINST`-by-`1` cell array of character vectors or string array with the following values:

• `'DKI'` — Double Knock-In

The `'DKI'` option becomes effective when the price of the underlying asset reaches one of the barriers. It gives the option holder the right but not the obligation to buy or sell the underlying security at the strike price, if the underlying asset goes above or below the barrier levels during the life of the option.

• `'DKO'` — Double Knock-Out

The `'DKO'` option gives the option holder the right but not the obligation to buy or sell the underlying security at the strike price, as long as the underlying asset remains between the barrier levels during the life of the option. This option terminates when the price of the underlying asset passes one of the barriers.

OptionBarrier TypePayoff If Any Barrier CrossedPayoff If Barriers Not Crossed
Call/PutDouble Knock-inStandard Call/PutWorthless
Call/PutDouble Knock-outWorthlessStandard Call/Put

Data Types: `char` | `cell` | `string`

Double barrier value, specified as `NINST`-by-`1` matrix of numeric values, where each element is a `1`-by-`2` vector where the first column is Barrier(1)(UB) and the second column is Barrier(2)(LB). Barrier(1) must be greater than Barrier(2).

Data Types: `double`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside quotes. You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ```Price = dblbarrierbybls(RateSpec,StockSpec,OptSpec,Strike,Settle,Maturity,BarrierSpec,Barrier,'Curvature',[1,5])```

Curvature levels of the upper and lower barriers, specified as the comma-separated pair consisting of `'Curvature'` and an `NINST`-by-`1` matrix, where each element is a `1`-by-`2` vector. The first column is the upper barrier curvature (d1) and the second column is the lower barrier curvature (d2).

• d1 = d2 = `0` corresponds to two flat boundaries.

• d1 < 0 < d2 corresponds to an exponentially growing lower boundary and an exponentially decaying upper boundary.

• d1 > 0 > d2 corresponds to a convex downward lower boundary and a convex upward upper boundary.

Data Types: `double`

## Output Arguments

collapse all

Expected prices for double barrier options at time 0, returned as a `NINST`-by-`1` matrix.

collapse all

### Double Barrier Option

A double barrier option is similar to the standard single barrier option except that it has two barrier levels: a lower barrier (`LB`) and an upper barrier (`UB`).

The payoff for a double barrier option depends on whether the underlying asset remains between the barrier levels during the life of the option. Double barrier options are less expensive than single barrier options as they have a higher knock-out probability. Because of this, double barrier options allow investors to reduce option premiums and match an investor’s belief about the future movement of the underlying price process.

### Ikeda and Kunitomo Approximation

The analytical formulas of Ikeda and Kunitomo approach pricing as constrained by curved boundaries.

This approach has the advantage of covering barriers that are flat, have exponential growth or decay, or are concave. The Ikeda and Kunitomo model for pricing double barrier options focuses on calculating double knock-out barriers.

 Hull, J. Options, Futures, and Other Derivatives. Fourth Edition. Upper Saddle River, NJ: Prentice Hall, 2000.

 Kunitomo, N., and M. Ikeda. “Pricing Options with Curved Boundaries.” Mathematical Finance. Vol. 2, Number 4, 1992.

 Rubinstein, M., and E. Reiner. “Breaking Down the Barriers.” Risk. Vol. 4, Number 8, 1991, pp. 28–35.