create a new European option
EuropeanOption(payoff, exercise, opts)
a non-negative constant, a string containing a date specification recognized in a format recognized by Finance[ParseDate], or a date data structure; the maturity time or date
(optional) equation(s) of the form option = value where option is one of referencedate or daycounter; specify options for the EuropeanOption command
referencedate = a string containing a date specification in a format recognized by Finance[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 EuropeanOption command creates a new European-style option with the specified payoff and maturity. This option can be exercised only at the time or date specified by the exercise parameter. This is the opposite of an American-style option, which can be exercised at any time before the expiration.
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 exercise specifies the time or date when the option can be exercised. It can be given either as a non-negative constant or as a date in any of the formats recognized by the Finance[ParseDate] command.
The LatticePrice command can be used to price a European-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);
Maturity := AdvanceDate(EvaluationDate(), 6, Months, output = formatted);
Maturity≔July 3, 2006
Construct a binomial tree approximating a Black-Scholes process with an initial value of 100, a risk-free rate of 10% and a 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 European call option with a strike price of 90 that matures in 6 months.
P1 := S -> max(S-90, 0);
plot(P1, 80..120, color = blue, thickness = 2, axes = BOXED, gridlines = true);
E1 := EuropeanOption(P1, 0.5):
E2 := EuropeanOption(P1, Maturity):
Calculate the price of this option using the tree constructed above. Use the risk-free rate as the discount rate.
LatticePrice(E1, T, 0.1);
LatticePrice(E2, T, 0.1);
Consider a European call option with a strike price of 110 that matures in 6 months.
P2 := S -> max(S-110, 0);
plot(P2, 80..120, color = blue, thickness = 2, axes = BOXED, gridlines = true);
E3 := EuropeanOption(P2, 0.5):
E4 := EuropeanOption(P2, Maturity):
LatticePrice(E3, T, 0.1);
LatticePrice(E4, T, 0.1);
Finally, consider a call option with a strike price of 100 maturing in 6 months.
P3 := S -> max(S-100, 0);
plot(P3, 80..120, color = blue, thickness = 2, axes = BOXED, gridlines = true);
E5 := EuropeanOption(P3, 0.5):
E6 := EuropeanOption(P3, Maturity):
LatticePrice(E5, T, 0.1);
LatticePrice(E6, T, 0.1);
Consider a more complicated payoff function.
P4 := S -> piecewise(S < 90, 0, S < 100, S-90, S < 110, 110-S, 0);
plot(P4, 80..120, color = blue, thickness = 2, axes = BOXED, gridlines = true);
E7 := EuropeanOption(P4, 0.5):
E8 := EuropeanOption(P4, Maturity):
LatticePrice(E7, T, 0.1);
LatticePrice(E8, T, 0.1);
Note that the payoff of the options E8 and E7 can be replicated using the payoffs of the options E1, E2, E3, E4, E5, and E6.
plot([P4, P1+P2-2*P3], 80..120, color = [blue, red], thickness = 2, axes = BOXED, gridlines = true);
This means that the prices should also match.
LatticePrice(E1, T, 0.1)+LatticePrice(E3, T, 0.1)-2*LatticePrice(E5, T, 0.1) = LatticePrice(E7, T, 0.1);
LatticePrice(E2, T, 0.1)+LatticePrice(E4, T, 0.1)-2*LatticePrice(E6, T, 0.1) = LatticePrice(E8, 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[EuropeanOption] 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)