# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# barrierbyls

Price European or American barier options using Monte Carlo simulations

## Syntax

``````[Price,Paths,Times,Z] = barrierbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,BarrierSpec,Barrier)``````
``````[Price,Paths,Times,Z] = barrierbyls(___,Name,Value)``````

## Description

example

``````[Price,Paths,Times,Z] = barrierbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates,BarrierSpec,Barrier)``` calculates barrier option prices on a single underlying asset using the Longstaff-Schwartz model. `barrierbyls` computes prices of European and American barrier options. For American options, the Longstaff-Schwartz least squares method is used to calculate the early exercise premium.```

example

``````[Price,Paths,Times,Z] = barrierbyls(___,Name,Value)``` adds optional name-value pair arguments. ```

## Examples

collapse all

Compute the price of an American down in put option using the following data:

```Rates = 0.0325; Settle = '01-Jan-2016'; Maturity = '01-Jan-2017'; Compounding = -1; Basis = 1;```

Define a `RateSpec`.

``` RateSpec = intenvset('ValuationDate',Settle,'StartDates',Settle,'EndDates',Maturity, ... 'Rates',Rates,'Compounding',Compounding,'Basis',Basis)```
```RateSpec = struct with fields: FinObj: 'RateSpec' Compounding: -1 Disc: 0.9680 Rates: 0.0325 EndTimes: 1 StartTimes: 0 EndDates: 736696 StartDates: 736330 ValuationDate: 736330 Basis: 1 EndMonthRule: 1 ```

Define a `StockSpec`.

``` AssetPrice = 40; Volatility = 0.20; StockSpec = stockspec(Volatility,AssetPrice)```
```StockSpec = struct with fields: FinObj: 'StockSpec' Sigma: 0.2000 AssetPrice: 40 DividendType: [] DividendAmounts: 0 ExDividendDates: [] ```

Calculate the price of an American barrier down in put option.

```Strike = 45; OptSpec = 'put'; Barrier = 35; BarrierSpec = 'DI'; AmericanOpt = 1; Price = barrierbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,Maturity,BarrierSpec,... Barrier,'NumTrials',2000,'AmericanOpt',AmericanOpt)```
```Price = 4.7306 ```

## 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. For information on the stock specification, see `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 character vector or string object with values `'call'` or `'put'`.

Data Types: `char` | `double`

Option strike price value, specified as an integer.

Data Types: `double`

Settlement or trade date for the barrier option, specified as a serial date number, a date character vector, or a datetime object.

Data Types: `double` | `char`

Option exercise dates, specified as a nonnegative scalar integer, a date character vector, or a datetime object:

• For a European option, use a `1`-by-`1` vector of dates. For a European option, there is only one `ExerciseDates` on the option expiry date which is the maturity of the instrument.

• For an American option, use a `1`-by-`2` vector of exercise date boundaries. The option can be exercised on any date between or including the pair of dates on that row. If only one non-`NaN` date is listed, or if `ExerciseDates` is a `1`-by-`1` vector of serial date numbers or a cell array of date character vectors, the option can be exercised between `Settle` and the single listed date in `ExerciseDates`.

Data Types: `double` | `char`

Barrier option type, specified as a character vector with the following values:

• `'UI'` — Up Knock In

This option becomes effective when the price of the underlying asset passes above the barrier level. It gives the option holder the right, but not the obligation, to buy/sell (call/put) the underlying security at the strike price if the underlying asset goes above the barrier level during the life of the option.

• `'UO'` — Up Knock Out

This option gives the option holder the right, but not the obligation, to buy/sell (call/put) the underlying security at the strike price as long as the underlying asset does not go above the barrier level during the life of the option. This option terminates when the price of the underlying asset passes above the barrier level. Usually with an up-and-out option, the rebate is paid if the spot price of the underlying reaches or exceeds the barrier level.

• `'DI'` — Down Knock In

This option becomes effective when the price of the underlying stock passes below the barrier level. It gives the option holder the right, but not the obligation, to buy/sell (call/put) the underlying security at the strike price if the underlying security goes below the barrier level during the life of the option. With a down-and-in option, the rebate is paid if the spot price of the underlying does not reach the barrier level during the life of the option.

• `'DO'` — Down Knock Up

This option gives the option holder the right, but not the obligation, to buy/sell (call/put) the underlying asset at the strike price as long as the underlying asset does not go below the barrier level during the life of the option. This option terminates when the price of the underlying security passes below the barrier level. Usually, the option holder receives a rebate amount if the option expires worthless.

OptionBarrier TypePayoff if Barrier CrossedPayoff if Barrier not Crossed
Call/PutDown Knock-outWorthlessStandard Call/Put
Call/PutDown Knock-inCall/PutWorthless
Call/PutUp Knock-outWorthlessStandard Call/Put
Call/PutUp Knock-inStandard Call/PutWorthless

Data Types: `char`

Barrier value, specified as a scalar integer.

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 single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: `Price = barrierbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,Maturity,BarrierSpec,Barrier,Rebate,1000)`

collapse all

Option type, specified as `NINST`-by-`1` positive integer scalar flags with values:

• `0` — European

• `1` — American

### Note

For American options, the Longstaff-Schwartz least squares method is used to calculate the early exercise premium. For more information on the least squares method, see https://people.math.ethz.ch/%7Ehjfurrer/teaching/LongstaffSchwartzAmericanOptionsLeastSquareMonteCarlo.pdf.

Data Types: `double`

Rebate value, specified as a scalar integer. For Knock In options, the rebate is paid at expiry. For Knock Out options, the rebate is paid when the barrier is reached.

Data Types: `double`

Scalar number of independent sample paths (simulation trials), specified as a nonnegative integer.

Data Types: `double`

Scalar number of simulation periods per trial, specified as a nonnegative integer.

Data Types: `double`

Time series array of dependent random variates, specified as a `NumPeriods`-by-`1`-by-`NumTrials` 3-D time series array. The `Z` value generates the Brownian motion vector (that is, Wiener processes) that drives the simulation.

Data Types: `double`

Indicator for antithetic sampling, specified with a value of `true` or `false`.

Data Types: `logical`

## Output Arguments

collapse all

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

Simulated paths of correlated state variables, returned as a ```NumPeriods + 1```-by-`1`-by-`NumTrials` 3-D time series array of simulated paths of correlated state variables. Each row of `Paths` is the transpose of the state vector X(t) at time t for a given trial.

Observation times associated with simulated paths, returned as a `NumPeriods + 1`-by-`1` column vector of observation times associated with the simulated paths. Each element of `Times` is associated with the corresponding row of `Paths`.

Time series array of dependent random variates, returned as a `NumPeriods`-by-`1`-by-`NumTrials` 3-D array when`Z` is specified as an input argument. If the `Z` input argument is not specified, then the `Z` output argument contains the random variates generated internally.

collapse all

### Barrier Option

A Barrier option has not only a strike price but also a barrier level and sometimes a rebate.

A rebate is a fixed amount that is paid if the option cannot be exercised because the barrier level has been reached or not reached. The payoff for this type of option depends on whether the underlying asset crosses the predetermined trigger value (barrier level), indicated by `Barrier`, during the life of the option.

## References

[1] Hull, J. Options, Futures and Other Derivatives. Fourth Edition. Prentice Hall, 2000, pp. 646–649.

[2] Aitsahlia, F., L. Imhof, and T.L. Lai. “Pricing and hedging of American knock-in options.” The Journal of Derivatives. Vol. 11.3 , 2004, pp. 44–50.

[3] Rubinstein M. and E. Reiner. “Breaking down the barriers.” Risk. Vol. 4(8), 1991, pp. 28–35.