create a new Bermudan option
BermudanOption(payoff, exercisetimes, opts)
BermudanOption(payoff, exercisedates, opts)
list of dates given in a format recognized by ParseDate or a date data structure; dates when the option can be exercised
list of non-negative constants; times when the option can be exercised
(optional) equation(s) of the form option = value where option is one of referencedate or daycounter; specify options for the BermudanOption command
referencedate = a string containing a date specification in a format recognized by ParseDate or a date data structure -- This option provides the evaluation date. It is set to the global evaluation date by default.
daycounter = a name representing a supported day counter (e.g. ISDA, Simple) or a day counter data structure created using the DayCounter constructor -- This option provides a day counter that will be used to convert the period between two dates to a fraction of the year. This option is used only if one of earliestexercise or latestexercise is specified as a date.
The BermudanOption command creates a new Bermudan-style option with the specified payoff and maturity. This option can be exercised at any time or date given in the exercisetimes or exercisedates list.
The parameter payoff is the payoff function for the option. It can be either an algebraic expression or a procedure. A procedure defining a payoff function must accept one parameter (the value of the underlying) and return the corresponding payoff. This procedure will be called with floating-point arguments only and must return floating-point values. If payoff is given as an algebraic expression it must depend on a single variable. This expression will be converted to a Maple procedure using the unapply function.
The parameter exercisedates specifies the dates when the option can be exercised. It has to be given as a list of dates in any of the formats recognized by the ParseDate command. The exercise times will be computed by converting the period between referencedate and the corresponding exercise date to a fraction of the year according to the day count convention specified by daycounter.
The LatticePrice command can be used to price a Bermudan-style option using any given binomial or trinomial tree.
Set the global evaluation date to January 3, 2006.
SetEvaluationDate("January 3, 2006"):
Settings(daycounter = Thirty360European);
Construct a binomial tree approximating a Black-Scholes process with an initial value of 100, risk-free rate of 10% and constant volatility of 40%. We will 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 a Bermudan put option with a strike price of 100 that can be exercised in 3 months or in 6 months.
P1 := S -> max(100-S, 0);
plot(P1, 80..120, thickness = 2, axes = BOXED, gridlines = true, color = blue);
A1 := BermudanOption(P1, [0.25, 0.5]):
Maturity := AdvanceDate(EvaluationDate(), 6, Months, output = formatted);
Maturity≔July 3, 2006
A2 := BermudanOption(P1, [AdvanceDate(EvaluationDate(), 3, Months), AdvanceDate(EvaluationDate(), 6, Months)]);
Calculate the price of this option using the tree constructed above. Use the risk-free rate as the discount rate.
LatticePrice(A1, T, 0.1);
LatticePrice(A2, T, 0.1);
Consider a Bermudan call option with a strike price of 100 that can be exercised in 3 months or in 6 months.
P2 := S -> max(S-100, 0);
plot(P2, 80..120, thickness = 2, axes = BOXED, gridlines = true, color = blue);
A3 := BermudanOption(P2, [0.25, 0.5]):
A4 := BermudanOption(P2, [AdvanceDate(EvaluationDate(), 3, Months), AdvanceDate(EvaluationDate(), 6, Months)]);
LatticePrice(A3, T, 0.1);
LatticePrice(A4, T, 0.1);
Consider a more complicated payoff function.
P3 := S -> piecewise(S < 90, 0, S < 100, S-90, S < 110, 110-S, 0);
plot(P3, 80..120, thickness = 2, axes = BOXED, gridlines = true, color = blue);
A5 := BermudanOption(P3, [0.25, 0.5]):
A6 := BermudanOption(P3, [AdvanceDate(EvaluationDate(), 3, Months), AdvanceDate(EvaluationDate(), 6, Months)]);
LatticePrice(A5, T, 0.1);
LatticePrice(A6, T, 0.1);
Move the earliest exercise date and observe how the price of a Bermudan-style option approaches the price of the corresponding European-style option.
E := EuropeanOption(P3, 0.5):
A := [seq(BermudanOption(P3, [0.1*i, 0.5]), i = 0..5)]:
LatticePrice(E, T, 0.1);
map(LatticePrice, A, T, 0.1);
Glasserman, P., Monte Carlo Methods in Financial Engineering, Springer-Verlag, 2004.
Hull, J., Options, Futures and Other Derivatives, 5th. edition. Prentice Hall, 2003.
Jackel, P., Monte Carlo Methods in Finance, John Wiley & Sons, 2002.
Joshi, M., The Concepts and Practice of Mathematical Finance, Cambridge University Press, 2003.
Wilmott, P., Paul Wilmott on Quantitative Finance, John Wiley and Sons Ltd, 2000.
Wilmott, P., Howison, S., and Dewyne, J., The Mathematics of Financial Derivatives, New York: Cambridge University Press, 1995.
The Finance[BermudanOption] command was introduced in Maple 15.
For more information on Maple 15 changes, see Updates in Maple 15.
Download Help Document
What kind of issue would you like to report? (Optional)