Main Content


Build Leisen-Reimer stock tree



LRTree = lrtree(StockSpec,RateSpec,TimeSpec,Strike) builds a Leisen-Reimer stock tree.


LRTree = lrtree(___,Name,Value) adds a name-value pair argument.


collapse all

This example shows how to build Leisen-Reimer stock tree. Consider a European put option with an exercise price of $30 that expires on June 1, 2010. The underlying stock is trading at $30 on January 1, 2010 and has a volatility of 30% per annum. The annualized continuously compounded risk-free rate is 5% per annum. Using this data, create a Leisen-Reimer tree with 101 steps using the PP1 method.

AssetPrice = 30;
Strike = 30;

ValuationDate = 'Jan-1-2010';
Maturity = 'June-1-2010'; 

% define StockSpec
Sigma = 0.3;
StockSpec = stockspec(Sigma, AssetPrice);

% define RateSpec
Rates = 0.05;
Settle = ValuationDate;
Basis = 1;
Compounding = -1;

RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', Settle, ...
'EndDates', Maturity, 'Rates', Rates, 'Compounding', Compounding, 'Basis', Basis);

% build the Leisen-Reimer (LR) tree with 101 steps
LRTimeSpec = lrtimespec(ValuationDate, Maturity, 101); 

% use the PP1 method
LRMethod  = 'PP1';

LRTree = lrtree(StockSpec, RateSpec, LRTimeSpec, Strike, ...
'method', LRMethod)
LRTree = struct with fields:
       FinObj: 'BinStockTree'
       Method: 'LR'
    Submethod: 'PP1'
       Strike: 30
    StockSpec: [1x1 struct]
     TimeSpec: [1x1 struct]
     RateSpec: [1x1 struct]
         tObs: [0 0.0041 0.0082 0.0123 0.0164 0.0205 0.0246 0.0288 ... ]
         dObs: [734139 734140 734141 734143 734144 734146 734147 734149 ... ]
        STree: {1x102 cell}
      UpProbs: [101x1 double]

Input Arguments

collapse all

Stock specification for underlying asset, specified using StockSpec obtained from stockspec. For information on the stock specification, see stockspec.

stockspec can handle other types of underlying assets. For example, stocks, stock indices, and commodities. If dividends are not specified in StockSpec, dividends are assumed to be 0.

Data Types: struct

Interest-rate specification for initial rate curve, specified by the RateSpec obtained from intenvset. For information on the interest-rate specification, see intenvset.

Data Types: struct

Time tree layout specification, specified using the TimeSpec output obtained from lrtimespec.

Data Types: struct

Option strike price value, specified as a scalar nonnegative integer.

Data Types: double

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: LRTree = lrtree(StockSpec,RateSpec,LRTimeSpec,Strike,'Method','PP2')

Computation method, specified as the comma-separated pair consisting of 'Method' and a character vector with a value of 'PP1' or 'PP2'. 'PP1' is for Peizer-Pratt method 1 inversion and 'PP2' is for Peizer-Pratt method 2 inversion. For more information on 'PP1' and 'PP2' methods, see Leisen-Reimer Tree (LR) Modeling.

Data Types: char

Output Arguments

collapse all

Stock and time information for a Leisen-Reimer tree, returned as a structure.


[1] Leisen D.P., M. Reimer. “Binomial Models for Option Valuation – Examining and Improving Convergence.” Applied Mathematical Finance. Number 3, 1996, pp. 319–346.

Version History

Introduced in R2010b