Main Content

lookbackbyls

Price European or American lookback options using Monte Carlo simulations

Syntax

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

Description

example

``````[Price,Paths,Times,Z] = lookbackbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)``` returns prices of lookback options using the Longstaff-Schwartz model for Monte Carlo simulations. `lookbackbyls` computes prices of European and American lookback options.For American options, the Longstaff-Schwartz least squares method calculates the early exercise premium. `lookbackbyls` 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`. NoteAlternatively, you can use the `Lookback` object to price lookback options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments. ```

example

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

Examples

collapse all

Define the `RateSpec`.

```StartDates = datetime(2013,1,1); EndDates = datetime(2014,1,1); Rates = 0.042; Compounding = -1; RateSpec = intenvset('ValuationDate', StartDates, 'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates, 'Compounding', Compounding)```
```RateSpec = struct with fields: FinObj: 'RateSpec' Compounding: -1 Disc: 0.9589 Rates: 0.0420 EndTimes: 1 StartTimes: 0 EndDates: 735600 StartDates: 735235 ValuationDate: 735235 Basis: 0 EndMonthRule: 1 ```

Define the `StockSpec`.

```AssetPrice = 50; Sigma = 0.36; StockSpec = stockspec(Sigma, AssetPrice)```
```StockSpec = struct with fields: FinObj: 'StockSpec' Sigma: 0.3600 AssetPrice: 50 DividendType: [] DividendAmounts: 0 ExDividendDates: [] ```

Define the floating lookback option.

```Settle = datetime(2013,1,1); Maturity = datetime(2013,4,1); OptSpec = 'put'; Strike = NaN;```

Compute the price of the European floating lookback option.

`Price = lookbackbyls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity)`
```Price = 6.6471 ```

Define the `RateSpec`.

```StartDates = 'Jan-1-2013'; EndDates = 'Jan-1-2014'; Rates = 0.045; Compounding = -1; RateSpec = intenvset('ValuationDate', StartDates, 'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates,'Compounding', Compounding)```
```RateSpec = struct with fields: FinObj: 'RateSpec' Compounding: -1 Disc: 0.9560 Rates: 0.0450 EndTimes: 1 StartTimes: 0 EndDates: 735600 StartDates: 735235 ValuationDate: 735235 Basis: 0 EndMonthRule: 1 ```

Define the `StockSpec`.

```AssetPrice = 102; Sigma = 0.45; StockSpec = stockspec(Sigma, AssetPrice)```
```StockSpec = struct with fields: FinObj: 'StockSpec' Sigma: 0.4500 AssetPrice: 102 DividendType: [] DividendAmounts: 0 ExDividendDates: [] ```

Define the fixed lookback option.

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

Compute the price of the European fixed lookback option.

`Price = lookbackbyls(RateSpec, StockSpec, OptSpec, Strike, Settle, Maturity)`
```Price = 30.2368 ```

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 represented by `StockSpec.Asset`, the volatility is represented by `StockSpec.Sigma`, and the convenience yield is represented by `StockSpec.DividendAmounts`.

Data Types: `struct`

Definition of option as `'call'` or `'put'`, specified as a `NINST`-by-`1` cell array of character vectors.

Data Types: `char` | `cell`

Option strike price values, specified as an integer using a `NINST`-by-`1` vector of strike price values.

Data Types: `single` | `double`

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

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

Exercise callable or puttable dates for European or American options, specified as a datetime array, string array, or date character vectors 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 dates, the option is exercised between `Settle` and the single listed exercise date.

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

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 = lookbackbyls(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr,'AmericanOpt',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: `double`

Scalar number of independent sample paths (simulation trials), specified as the comma-separated pair consisting of `'NumTrials'` and a nonnegative integer.

Data Types: `double`

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, `NumPeriods` is equal to the number of exercise days during the life of the option.

Data Types: `double`

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: `double`

Indicator for antithetic sampling, specified as the comma-separated pair consisting of `'Antithetic'` and a value of `true` or `false`.

Data Types: `logical`

Output Arguments

collapse all

Expected price of the lookback option, returned as a `1`-by-`1` scalar.

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

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

collapse all

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

expand all