return the net present value of the given instruments computed using a binomial or trinomial tree
LatticePrice(instrument, model, discountrate, opts)
one-asset option, swaption, cap, floor, or collar data structure; financial instrument
binomial or trinomial tree; tree approximation for the underlying stochastic process
non-negative constant or a yield term structure; discount rate
equations of the form option = value where option is one of referencedate or daycounter; specify options for the LatticePrice command
daycounter = a string containing a date specification in a format recognized by ParseDate or a Date data structure -- This option specifies a day counter or day counting convention.
referencedate = a string containing a date specification in a format recognized by ParseDate or a Date data structure -- This option specifies the reference date, that is, the date when the discount factor is 1. By default this is set to the global evaluation date.
The LatticePrice command computes the net present value of the specified financial instrument using the specified lattice approximation for the underlying stochastic process.
The parameter instrument is a financial instrument to be valued. At the present the following instruments are supported:
a one-asset option of the American, Bermudan, or European type (see AmericanOption, BermudanOption, or EuropeanOption)
a swaption of the American, Bermudan, or European type (see AmericanSwaption, BermudanSwaption, or EuropeanSwaption)
interest rate cap, floor, or collar (see Cap, Floor, or Collar)
The parameter model is a binomial or trinomial tree.
The parameter discountrate is the discount rate. It can be either a non-negative constant or a yield term structure. In the former case the reference date and the day count convention for the underlying term structure can be provided using the options daycounter and referencedate.
Note that all internal computations are performed at the hardware precision.
Set the global evaluation date to January 3, 2006.
SetEvaluationDate⁡January 3, 2006:
Construct a binomial tree approximating a Black-Scholes process with an initial value of 100, a risk-free rate of 10%, and constant volatility of 40%. Assume that no dividend is paid. Build the tree by subdividing the time period 0..0.6 into 1000 equal time steps.
T ≔ BlackScholesBinomialTree⁡100,0.1,0.0,0.4,0.6,1000:
Consider an American put option with a strike price of 100 that matures in 6 months.
P ≔ S→max⁡100−S,0
A1 ≔ AmericanOption⁡P,0,0.5:
Maturity ≔ AdvanceDate⁡EvaluationDate⁡,6,Months,output=formatted
Maturity≔July 3, 2006
A2 ≔ AmericanOption⁡P,EvaluationDate⁡,Maturity:
Calculate the price of this option using the tree constructed above. Use the risk-free rate as the discount rate.
The next set of examples will demonstrate how to price American-style swaptions using Hull-White trinomial trees.
SetEvaluationDate⁡November 17, 2006:
November 17, 2006
nominalamt ≔ 1000.0
fixing_days ≔ 2
start ≔ AdvanceDate⁡1,Years,EURIBOR
start≔November 17, 2007
maturity ≔ AdvanceDate⁡start,5,Years,EURIBOR
maturity≔November 17, 2012
discount_curve ≔ ForwardCurve⁡0.04875825,'daycounter'=Actual365Fixed
fixed_schedule ≔ Schedule⁡start,maturity,Annual,'convention'=Unadjusted,'calendar'=EURIBOR
fixed_schedule ≔ moduleend module
floating_schedule ≔ Schedule⁡start,maturity,Semiannual,'convention'=ModifiedFollowing,'calendar'=EURIBOR
floating_schedule ≔ moduleend module
benchmark ≔ BenchmarkRate⁡6,Months,EURIBOR,0.04875825
benchmark ≔ moduleend module
Construct an interest rate swap receiving the fixed-rate payments in exchange for the floating-rate payments.
swap ≔ InterestRateSwap⁡nominalamt,0.0,fixed_schedule,benchmark,floating_schedule,0.0
swap ≔ moduleend module
Compute the at-the-money rate for this interest rate swap.
atm_rate ≔ FairRate⁡swap,discount_curve
Construct three swaps.
itm_swap ≔ InterestRateSwap⁡nominalamt,0.8⁢atm_rate,fixed_schedule,benchmark,floating_schedule,0.0
itm_swap ≔ moduleend module
atm_swap ≔ InterestRateSwap⁡nominalamt,1.0⁢atm_rate,fixed_schedule,benchmark,floating_schedule,0.0
atm_swap ≔ moduleend module
otm_swap ≔ InterestRateSwap⁡nominalamt,1.2⁢atm_rate,fixed_schedule,benchmark,floating_schedule,0.0
otm_swap ≔ moduleend module
Here are cash flows for the paying leg of our interest rate swap.
cash_flows ≔ CashFlows⁡itm_swap,paying
cash_flows≔39.96838906 on 'November 17, 2008',39.96838906 on 'November 17, 2009',39.96838906 on 'November 17, 2010',39.96838906 on 'November 17, 2011',39.96838906 on 'November 19, 2012'
Here are cash flows for the receiving leg of our interest rate swap.
24.67872558 on 'May 19, 2008',24.40119905 on 'November 17, 2008',24.81751704 on 'May 18, 2009',24.53995292 on 'November 17, 2009',24.67872558 on 'May 17, 2010',24.67872558 on 'November 17, 2010',24.67872558 on 'May 17, 2011',24.67872558 on 'November 17, 2011',24.67872558 on 'May 17, 2012',24.95632730 on 'November 19, 2012'
These are the days when coupon payments are scheduled to occur.
dates ≔ map⁡t→tdate,cash_flows
itm_swaption ≔ AmericanSwaption⁡itm_swap,AdvanceDate⁡start,1,Days,EURIBOR,AdvanceDate⁡dates−2,1,Days,EURIBOR
itm_swaption ≔ moduleend module
atm_swaption ≔ AmericanSwaption⁡atm_swap,AdvanceDate⁡start,1,Days,EURIBOR,AdvanceDate⁡dates−2,1,Days,EURIBOR
atm_swaption ≔ moduleend module
otm_swaption ≔ AmericanSwaption⁡otm_swap,AdvanceDate⁡start,1,Days,EURIBOR,AdvanceDate⁡dates−2,1,Days,EURIBOR
otm_swaption ≔ moduleend module
Price these swaptions using the Hull-White trinomial tree.
a ≔ 0.048696
σ ≔ 0.0058904
model ≔ HullWhiteModel⁡discount_curve,a,σ
model ≔ moduleend module
time_grid ≔ TimeGrid⁡YearFraction⁡maturity+0.5,100
time_grid ≔ moduleend module
short_rate_tree ≔ ShortRateTree⁡model,time_grid
short_rate_tree ≔ moduleend module
Price your swaptions using the tree constructed above.
The Finance[LatticePrice] command was introduced in Maple 15.
For more information on Maple 15 changes, see Updates in Maple 15.
Download Help Document