dblbarrierbybls

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

Since R2019a

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. NoteAlternatively, you can use the `DoubleBarrier` object to price double barrier options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments. ```

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 = datetime(2018,6,1); Maturity = datetime(2018,12,1); 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` vector using a datetime array, string array, or date character vectors.

To support existing code, `dblbarrierbybls` also accepts serial date numbers as inputs, but they are not recommended.

Option exercise dates, specified as an `NINST`-by-`1` vector using a datetime array, string array, or date character vectors.

Note

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

To support existing code, `dblbarrierbybls` also accepts serial date numbers as inputs, but they are not recommended.

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 Arguments

Specify optional pairs of arguments as `Name1=Value1,...,NameN=ValueN`, where `Name` is the argument name and `Value` is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose `Name` in quotes.

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.

References

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

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

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

Version History

Introduced in R2019a

expand all