Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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.

example

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

Examples

collapse all

Define the RateSpec.

StartDates = 'Jan-1-2013';
EndDates = 'Jan-1-2014';
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   = 'Jan-1-2013';
Maturity = 'April-1-2013'; 
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 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

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

collapse all

Option type, specified as 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

Scalar number of independent sample paths (simulation trials), specified as a nonnegative integer.

Data Types: single | double

Scalar number of simulation periods per trial, specified as 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: single | double

Time series array of dependent random variates, specified as 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

Indicator for antithetic sampling, specified with 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.

References

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

Introduced in R2014a

Was this topic helpful?