# 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.

# optstocksensbyls

Calculate price and sensitivities for European, Bermudan, or American vanilla options using Monte Carlo simulations

## Syntax

``PriceSens = optstocksensbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)``
``PriceSens = optstocksensbyls(___,Name,Value)``
``````[PriceSens,Path,Times,Z] = optstocksensbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)``````
``````[PriceSens,Path,Times,Z] = optstocksensbyls(___,Name,Value)``````

## Description

example

````PriceSens = optstocksensbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)` returns vanilla option prices or sensitivities using the Longstaff-Schwartz model. `optstocksensbyls` computes prices or sensitivities of European, Bermudan, and American vanilla options. For American and Bermudan options, the Longstaff-Schwartz least squares method is used to calculate the early exercise premium. ```

example

````PriceSens = optstocksensbyls(___,Name,Value)`adds optional name-value pair arguments.```

example

``````[PriceSens,Path,Times,Z] = optstocksensbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)``` returns vanilla option prices or sensitivities using the Longstaff-Schwartz model.```

example

``````[PriceSens,Path,Times,Z] = optstocksensbyls(___,Name,Value)``` adds optional name-value pair arguments.```

## Examples

collapse all

Define the `RateSpec`.

```StartDates = 'Jan-1-2013'; EndDates = 'Jan-1-2015'; Rates = 0.05; RateSpec = intenvset('ValuationDate', StartDates, 'StartDates', StartDates, ... 'EndDates', EndDates, 'Rates', Rates)```
```RateSpec = struct with fields: FinObj: 'RateSpec' Compounding: 2 Disc: 0.9060 Rates: 0.0500 EndTimes: 4 StartTimes: 0 EndDates: 735965 StartDates: 735235 ValuationDate: 735235 Basis: 0 EndMonthRule: 1 ```

Define the `StockSpec` for the asset.

```AssetPrice = 100; Sigma = 0.1; DivType = 'continuous'; DivAmounts = 0.04; StockSpec = stockspec(Sigma, AssetPrice, DivType, DivAmounts)```
```StockSpec = struct with fields: FinObj: 'StockSpec' Sigma: 0.1000 AssetPrice: 100 DividendType: {'continuous'} DividendAmounts: 0.0400 ExDividendDates: [] ```

Define the vanilla option.

```OptSpec = 'call'; Settle = 'jan-1-2013'; ExerciseDates = 'jan-1-2015'; Strike = 105;```

Compute the `Delta` sensitivity for the vanilla option using the Longstaff-Schwartz model.

```Antithetic = true; OutSpec = {'Delta'}; PriceSens = optstocksensbyls(RateSpec, StockSpec, OptSpec, Strike, ... Settle, ExerciseDates,'Antithetic', Antithetic, 'OutSpec', OutSpec)```
```PriceSens = 0.3945 ```

To display the output for `Price`, `Delta`, `Path`, and `Times`, use the following:

```OutSpec = {'Price','Delta'}; [Price, Delta, Path, Times] = optstocksensbyls(RateSpec, StockSpec, OptSpec, Strike, ... Settle, ExerciseDates,'Antithetic', Antithetic, 'OutSpec', OutSpec);```

## 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 underlying asset, specified using `StockSpec` obtained from `stockspec`. For information on the stock specification, see `stockspec`.

`stockspec` can handle other types of underlying assets. For example, stocks, stock indices, and commodities.

Data Types: `struct`

Definition of option, specified as `'call'` or `'put'` using a character vector.

Data Types: `char`

Option strike price value, specified with a nonnegative scalar integer:

• For a European option, use a scalar of strike price.

• For a Bermuda option, use a `1`-by-`NSTRIKES` vector of strike price.

• For an American option, use a scalar of strike price.

Data Types: `single` | `double`

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

Data Types: `double` | `char`

Option exercise date, specified as a date character vector or serial date number:

• 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.

• For a Bermuda option, use a `1`-by-`NSTRIKES` vector of dates.

• 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 cell array of character vectors, the option can be exercised between `Settle` and the single listed `ExerciseDates`.

Data Types: `double` | `char`

### 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 = optstocksensbyls(RateSpec,StockSpec, OptSpec,Strike,Settle,ExerciseDates,'AmericanOpt','1','NumTrials','2000','OutSpec',{'Price','Delta','Gamma'})```

collapse all

Option type, specified as a positive integer scalar flag with values:

• `0` — European or Bermuda

• `1` — American

### Note

For American and Bermudan 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: `single` | `double`

Simulation trials, specified as a scalar number of independent sample paths.

Data Types: `double`

Simulation periods per trial, specified as a scalar number. `NumPeriods` is considered only when pricing European vanilla options. For American and Bermuda vanilla options, `NumPeriod` is equal to the number of `Exercise` days during the life of the option.

Data Types: `double`

Dependent random variates used to generate the Brownian motion vector (that is, Wiener processes) that drive the simulation, specified as a `NumPeriods`-by-`1`-by-`NumTrials` 3-D time series array.

Data Types: `single` | `double`

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

Data Types: `logical`

Define outputs specifying `NOUT`- by-`1` or `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 should be `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 price or sensitivities (defined by `OutSpec`) of the vanilla option, returned as a `1`-by-`1` array.

Simulated paths of correlated state variables, returned as a (`NumPeriods` + `1`)-by-`1`-by-`NumTrials` 3-D time series array. 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`.

Dependent random variates, if `Z` is specified as an optional input argument, the same value is returned. Otherwise, `Z` contains the random variates generated internally.