Main Content

lookbacksensbyls

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

Syntax

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

Description

example

``````[PriceSens,Paths,Times,Z] = lookbacksensbyls(RateSpec,StockSpec,OptSpec,Strike,Settle,ExerciseDates)``` returns prices or sensitivities of lookback options using the Longstaff-Schwartz model for Monte Carlo simulations. `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`. NoteAlternatively, you can use the `Lookback` object to calculate price or sensitivities for lookback options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments. ```

example

``````[PriceSens,Paths,Times,Z] = lookbacksensbyls(___,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.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 = datetime(2013,1,1); Maturity = datetime(2013,7,1); 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 = datetime(2013,1,1); EndDates = datetime(2015,1,1); 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 = datetime(2013,1,1); Maturity = datetime(2013,7,1); 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

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

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, `lookbacksensbyls` also accepts serial date numbers as inputs, but they are not recommended.

Matrix of 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, `lookbacksensbyls` 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: ```PriceSens = lookbacksensbyls(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr,'AmericanOpt',1,'OutSpec',{'All'})```

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, `NumPeriod` 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`

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

collapse all

Expected price or sensitivities (defined by `OutSpec`) of the lookback 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`.

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