10.1. A chooser option is an option that give its holder the right to choose
among other options at some future date prior to expiration. The
standard chooser option gives its holder the right to choose either a
put or a call option. Speci¯cally, the holder of a chooser option can
choose at time T1 between a put and a call option, both with strike
price K expiring at time T2 > T1.
A chooser option can be thought of as a derivative asset with a terminal
date of T1 and a payout of max(P(T1; T2);C(T1; T2)), where P(t; T) is
the time t value of a put expiring at time T and C is de¯ned similarly
for a call.
Suppose that the underlying asset is described by
dS = rSdt + ¾SdW
(i.e., geometric Brownian motion). Speci¯cally let r = 0:05, ¾ = 0:5,
K = 1, T1 = 1 and T2 = 1:5 (with now being t = 0). Write a Mat-
lab program that prices the chooser option. Plot the chooser option,
together with the prices of the put and the call options.
Comment on how the chooser option priced here compares with the
values of a put and a call with T2 periods until expiration.
10.2. A coupon bond is a bond that makes payments while the bond is alive
as well as at its terminal date. Continuous coupons are like dividend
°ows. Most coupons, however, are paid discretely. Price a 10 year
bond using the CIR interest rate model that pays 0:05 (5%) times its
face value at the start of every year, starting one year after it is issued
(assume a face value of 1). Use the parameters · = 0:1, ® = 0:05 and
¾ = 0:08.
A callable bond is like an option in that it can be exercised early but
the seller has the right to determine whether it is exercised. Price the
above coupon bond with the extra feature that the seller can call the
bond once a year right after paying the coupon. Essentially this means
that the exercise value is 1:05. If the bond is worth more than this
alive, it is optimal to call the bond.
Write a Matlab program that prices the coupon bond both with and
without the callable feature. Note that finsolve could be used to solve
this problem but it is ine±cient (you should make sure you understand
why). You should, therefore, write your own code to solve this problem,
preferably in the form of a function that can be reused for other bond
pricing problems. Your code should be robust so that features such as
the bond's horizon and how often it is callable can be easily altered.