Calculate price and sensitivities for European or American lookback options using Monte Carlo simulations

```
[PriceSens,Paths,Times,Z]
= lookbacksensbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)
```

```
[PriceSens,Paths,Times,Z]
= lookbacksensbyls(___,Name,Value)
```

`[`

returns prices or sensitivities of lookback options using the Longstaff-Schwartz model for
Monte Carlo simulations. `PriceSens`

,`Paths`

,`Times`

,`Z`

]
= lookbacksensbyls(`RateSpec`

,`StockSpec`

,`OptSpec`

,`Strike`

,`Settle`

,`ExerciseDates`

)`lookbacksensbyls`

computes prices of European
and American lookback options.

For American options, the Longstaff-Schwartz least squares method calculates the early exercise premium.

`lookbacksensbyls`

calculates values of fixed- and floating-strike
lookback options. To compute the value of a floating-strike lookback option,
`Strike`

must be specified as `NaN`

.

Define the `RateSpec`

.

StartDates = 'Jan-1-2013'; EndDates = 'Jan-1-2014'; Rates = 0.41; Compounding = -1; RateSpec = intenvset('ValuationDate', StartDates, 'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates,'Compounding', Compounding)

`RateSpec = `*struct with fields:*
FinObj: 'RateSpec'
Compounding: -1
Disc: 0.6637
Rates: 0.4100
EndTimes: 1
StartTimes: 0
EndDates: 735600
StartDates: 735235
ValuationDate: 735235
Basis: 0
EndMonthRule: 1

Define the `StockSpec`

with continuous dividend yield.

```
AssetPrice = 120;
Sigma = 0.3;
Yield = 0.045;
StockSpec = stockspec(Sigma, AssetPrice, 'Continuous', Yield)
```

`StockSpec = `*struct with fields:*
FinObj: 'StockSpec'
Sigma: 0.3000
AssetPrice: 120
DividendType: {'continuous'}
DividendAmounts: 0.0450
ExDividendDates: []

Define the floating lookback option.

Settle = 'Jan-1-2013'; Maturity = 'July-1-2013'; OptSpec = 'call'; Strike = NaN;

Compute the price and delta of the European floating lookback option.

OutSpec = {'price', 'delta'}; [Price, Delta] = lookbacksensbyls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity,... 'OutSpec', OutSpec)

Price = 27.0768

Delta = 0.2256

Define the `RateSpec`

.

StartDates = 'Jan-1-2013'; EndDates = 'Jan-1-2015'; Rates = 0.1; Compounding = -1; RateSpec = intenvset('ValuationDate', StartDates, 'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates,'Compounding', Compounding)

`RateSpec = `*struct with fields:*
FinObj: 'RateSpec'
Compounding: -1
Disc: 0.8187
Rates: 0.1000
EndTimes: 2
StartTimes: 0
EndDates: 735965
StartDates: 735235
ValuationDate: 735235
Basis: 0
EndMonthRule: 1

Define the `StockSpec`

.

AssetPrice = 103; Sigma = 0.30; StockSpec = stockspec(Sigma, AssetPrice)

`StockSpec = `*struct with fields:*
FinObj: 'StockSpec'
Sigma: 0.3000
AssetPrice: 103
DividendType: []
DividendAmounts: 0
ExDividendDates: []

Define the fixed lookback option.

Settle = 'Jan-1-2013'; Maturity = 'July-1-2013'; OptSpec = 'call'; Strike = 99;

Compute the price and delta of the European fixed lookback option.

OutSpec = {'price', 'delta'}; [Price, Delta] = lookbacksensbyls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity,... 'OutSpec', OutSpec)

Price = 22.7227

Delta = 1.1349

`StockSpec`

— Stock specification for underlying assetstructure

Stock specification for the underlying asset. For information on the stock
specification, see `stockspec`

.

`stockspec`

can handle several types of
underlying assets. For example, for physical commodities the price is represented by
`StockSpec.Asset`

, the volatility is represented by
`StockSpec.Sigma`

, and the convenience yield is represented by
`StockSpec.DividendAmounts`

.

**Data Types: **`struct`

`OptSpec`

— Definition of option character vector with values

`'call'`

or
`'put'`

| cell array of character vectorsDefinition of option as `'call'`

or `'put'`

,
specified as a `NINST`

-by-`1`

cell array of character
vectors.

**Data Types: **`char`

| `cell`

`Strike`

— Option strike price valuesinteger | vector of integers

Option strike price values, specified as an integer using a
`NINST`

-by-`1`

vector of strike price values.

**Data Types: **`single`

| `double`

`Settle`

— Settlement or trade dateserial date number | vector of serial date numbers | date character vector | cell array of character vectors

Settlement or trade date for the lookback option, specified as date character
vectors or as serial date numbers using a
`NINST`

-by-`1`

vector or cell array of character
vector dates.

**Data Types: **`double`

| `char`

| `cell`

`ExerciseDates`

— Matrix of exercise callable or puttable dates for European or American optionsserial date number | vector of serial date numbers | date character vector | cell array of character vectors

Matrix of exercise callable or puttable dates for European or American options, specified as date character vectors or as serial date numbers as follows:

European option —

`NINST`

-by-`1`

vector of exercise dates. For a European option, there is only one exercise date which is the option expiry date.American option —

`NINST`

-by-`2`

vector of exercise date boundaries. For each instrument, the option is exercised on any coupon date between or including the pair of dates on that row. If only one non-`NaN`

date is listed, or if`ExerciseDates`

is a`NINST`

-by-`1`

vector of serial date numbers or cell array of character vectors, the option is exercised between`Settle`

and the single listed exercise date.

**Data Types: **`double`

| `char`

| `cell`

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`

.

```
PriceSens =
lookbacksensbyls(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr,'AmericanOpt',1,'OutSpec',{'All'})
```

`'AmericanOpt'`

— Option type`0`

European (default) | scalar with value `[0,1]`

Option type, specified as the comma-separated pair consisting of
`'AmericanOpt'`

and an integer scalar flag with these values:

`0`

— European`1`

— American

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: **`single`

| `double`

`'NumTrials'`

— Scalar number of independent sample paths `1000`

(default) | nonnegative scalar integerScalar number of independent sample paths (simulation trials), specified as the
comma-separated pair consisting of `'NumTrials'`

and a nonnegative
integer.

**Data Types: **`single`

| `double`

`'NumPeriods'`

— Scalar number of simulation periods per trial`100`

(default) | nonnegative scalar integerScalar number of simulation periods per trial, specified as the comma-separated
pair consisting of `'NumPeriods'`

and a nonnegative integer.
`NumPeriods`

is considered only when pricing European lookback
options. For American lookback options, `NumPeriod`

is equal to the
number of exercise days during the life of the option.

**Data Types: **`single`

| `double`

`'Z'`

— Time series array of dependent random variatesvector

Time series array of dependent random variates, specified as the comma-separated
pair consisting of `'Z'`

and a
`NumPeriods`

-by-`1`

-by-`NumTrials`

3-D array. The `Z`

value generates the Brownian motion vector (that
is, Wiener processes) that drives the simulation.

**Data Types: **`single`

| `double`

`'Antithetic'`

— Indicator for antithetic sampling`false`

(default) | scalar logical flag with value `true`

or
`false`

Indicator for antithetic sampling, specified as the comma-separated pair
consisting of `'Antithetic'`

and a value of `true`

or `false`

.

**Data Types: **`logical`

`'OutSpec'`

— Define outputs`{'Price'}`

(default) | character vector with values `'Price'`

,
`'Delta'`

, `'Gamma'`

, `'Vega'`

,
`'Lambda'`

, `'Rho'`

, `'Theta'`

,
and `'All'`

| cell array of character vectors with values `'Price'`

,
`'Delta'`

, `'Gamma'`

, `'Vega'`

,
`'Lambda'`

, `'Rho'`

, `'Theta'`

,
and `'All'`

Define outputs, specified as the comma-separated pair consisting of
`'OutSpec'`

and a `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 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`

`PriceSens`

— Expected price or sensitivities of lookback optionscalar

Expected price or sensitivities (defined by `OutSpec`

) of the
lookback option, returned as a `1`

-by-`1`

array.

`Paths`

— Simulated paths of correlated state variablesvector

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.

`Times`

— Observation times associated with simulated pathsvector

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`

.

`Z`

— Time series array of dependent random variatesvector

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.

[1] Hull, J. C. *Options, Futures, and Other Derivatives* 5th
Edition. Englewood Cliffs, NJ: Prentice Hall, 2002.

`intenvset`

| `lookbackbycvgsg`

| `lookbackbyls`

| `lookbacksensbycvgsg`

| `stockspec`

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)