Main Content

touchsensbybls

Calculate price or sensitivities for one-touch and no-touch binary options using Black-Scholes option pricing model

Since R2019b

Syntax

``PriceSens = touchsensbybls(RateSpec,StockSpec,Settle,Maturity,BarrierSpec,Barrier,Payoff)``
``PriceSens = touchsensbybls(___,Name,Value)``

Description

example

````PriceSens = touchsensbybls(RateSpec,StockSpec,Settle,Maturity,BarrierSpec,Barrier,Payoff)` calculates the price and sensitivities for one-touch and no-touch binary options using the Black-Scholes option pricing model. NoteAlternatively, you can use the `Touch` object to calculate price or sensitivities for one touch options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments. ```

example

````PriceSens = touchsensbybls(___,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 and sensitivities for a one-touch option using the following data:

```AssetPrice = 105; Rate = 0.1; Volatility = 0.2; Settle = datetime(2018,1,1); Maturity = datetime(2018,6,1);```

Define the `RateSpec` using `intenvset`.

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

Define the `StockSpec` using `stockspec`.

```DividendType = "Continuous"; DividendYield = Rate - 0.1; StockSpec = stockspec(Volatility, AssetPrice, DividendType, DividendYield);```

Define the sensitivities.

`OutSpec = {'price', 'delta', 'gamma'};`

Calculate the price and sensitivities for a one-touch binary option.

```BarrierSpec = "OT"; Barrier = 100; Payoff = 15; [Price, Delta, Gamma] = touchsensbybls(RateSpec, StockSpec, Settle, Maturity, BarrierSpec, Barrier, Payoff,'OutSpec',OutSpec)```
```Price = 9.4102 ```
```Delta = -0.9415 ```
```Gamma = 0.0685 ```

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`

Settlement or trade date for the touch option, specified as an `NINST`-by-`1` vector using a datetime array, string array, or date character vectors.

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

Maturity date for the touch option, specified as an `NINST`-by-`1` vector using a datetime array, string array, or date character vectors.

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

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

• `'OT'` — One-touch. The one-touch option provides a payoff if the underlying spot ever trades at or beyond the `Barrier` level and the payoff is zero otherwise.

• `'NT'` — No-touch. The no-touch option provides a `Payoff` if the underlying spot ever never trades at or beyond the `Barrier` level and the `Payoff` is zero otherwise.

Data Types: `char` | `cell`

Barrier value, specified as an `NINST`-by-`1` matrix of numeric values.

Data Types: `double`

Payoff value, specified as an `NINST`-by-`1` matrix of numeric values.

Note

The payoff value is calculated for the point in time that the `Barrier` value is reached. The payoff is either cash or nothing. If a no-touch option is specified using the `BarrierSpec`, the payoff is at the `Maturity` of the option.

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 = touchsensbybls(RateSpec,StockSpec,Settle,Maturity,BarrierSpec,Barrier,Payoff,'OutSpec','Delta')```

Define outputs, specified as the comma-separated pair consisting of `'OutSpec'` and an `NOUT`- by-`1` or a `1`-by-`NOUT` cell array of character vectors with possible values of `'Price'`, `'Delta'`, `'Gamma'`, `'Vega'`, `'Lambda'`, `'Rho'`, `'Theta'`, and `'All'`.

`OutSpec = {'All'}` specifies that the output is `Delta`, `Gamma`, `Vega`, `Lambda`, `Rho`, `Theta`, and `Price`, in that order. This is the same as specifying `OutSpec` to include each sensitivity.

Example: ```OutSpec = {'delta','gamma','vega','lambda','rho','theta','price'}```

Data Types: `char` | `cell`

Output Arguments

collapse all

Expected prices at time 0 or sensitivities (defined using `OutSpec`) for one-touch options, returned as an `NINST`-by-`1` matrix.

More About

collapse all

Touch and No-Touch Options

The one-touch and no-touch options provide a payoff if the underlying spot either ever or never trades at or beyond the barrier level. Otherwise, the payoff is zero.

Only two outcomes are possible with a one-touch option if a trader holds the contract all the way through expiration:

• The target price (`Barrier`) is reached and the trader collects the full premium.

• The target price (`Barrier`) is not reached and the trader loses the amount originally paid to open the trade.

References

[1] Haug, E. The Complete Guide to Option Pricing Formulas. McGraw-Hill Education, 2007.

[2] Wystup, U. FX Options and Structured Products. Wiley Finance, 2007.

Version History

Introduced in R2019b

expand all