# lookbacksensbyls

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

## Syntax

## Description

`[`

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`

.

## Examples

### Compute the Price and Delta of a European Floating Lookback Option Using Monte Carlo Simulation

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

### Compute the Price and Delta of a European Fixed Lookback Option Using Monte Carlo Simulation

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

## Input Arguments

`StockSpec`

— Stock specification for underlying asset

structure

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 vectors

Definition 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 values

integer | 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 date

serial 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 options

serial 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`

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

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

| `double`

`NumTrials`

— Scalar number of independent sample paths

`1000`

(default) | nonnegative scalar integer

Scalar 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 integer

Scalar 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 variates

vector

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`

## Output Arguments

`PriceSens`

— Expected price or sensitivities of lookback option

scalar

Expected price or sensitivities (defined by `OutSpec`

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

-by-`1`

array.

`Paths`

— Simulated paths of correlated state variables

vector

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 paths

vector

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 variates

vector

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.

## More About

### Lookback Option

A *lookback option* is a path-dependent option
based on the maximum or minimum value the underlying asset achieves during the entire life
of the option.

Financial Instruments Toolbox™ software supports two types of lookback options: fixed and floating. Fixed lookback options have a specified strike price, while floating lookback options have a strike price determined by the asset path. For more information, see Lookback Option.

## References

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

## Version History

**Introduced in R2014a**

## Open Example

You have a modified version of this example. Do you want to open this example with your edits?

## MATLAB Command

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.

# Select a Web Site

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

You can also select a web site from the following list:

## How to Get Best Site Performance

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

### Americas

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

### Europe

- 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)