FE545 Final Exam

Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due

FE545 Final Exam

Due Date: May 5th (Sunday). Tree-based methods can be used for obtaining option prices, which are especially popular for pricing American options. Binomial, trinomial, and random tree methods can be used to price many options, including plain vanilla options, and also exotic options such as barrier options, digital options, Asian options, and others. In this assignment, you are required to price American option using both trinomial and random tree methods through which you are to apply some of the design patterns in C++ programming to solve the problem. The problem has multiple parts, and each part has different points assigned.

Pricing a derivative security entails calculating the expected discounted value of its payoff. This reduces, in principle, to a problem of numerical integration; but in practice this calculation is often difficult for high-dimensional pricing problems.

The binomial options pricing model (BOPM) approach has been widely used since it is able to handle a variety of conditions for which other models cannot easily be applied. This is largely because the BOPM is based on the description of an underlying instrument over a period of time rather than a single point. As a consequence, it is used to value American options that are exercisable at any time in a given interval. The trinomial option pricing model, proposed by Phelim Boyle in 1986, is considered 1to be more accurate than the binomial model, and will compute the same results, but in fewer steps.

Broadie and Glasserman (1997) proposed the method of the simulated random tree to price American options, which can derive the upper and lower bounds for American options. This combination makes it possible to measure and control errors as the computational effort increases. The main drawback of the random tree method is that its computational requirements grow exponentially in the number of exercise dates m, so the method is applicable only when m is small. Nevertheless, for problems with small m it is very effective, and it also serves to illustrate a theme of managing scores of high and low bias.

The typical simulation approach to European option pricing is to use simulation to estimate the expectation

 (1)
under the risk neutral measure. As usual, r denotes the riskless rate of interest, T the option maturity, K the strike price, and Sr the terminal stock price. The American option pricing problem is to find
over all stopping times τ ≤ T.

We focus on a discrete time approximation to this problem where we restrict the exercise opportunities to lie in the finite set of times 0 = to < t1 < ... < td = T. The analogous procedure for an American option would be to simulate a path of asset prices, say, S0, S1, ..., ST , at corresponding times 0 = t0 < t1 < ... < td = T; then compute a discounted option value corresponding to this path, and finally average the results over many simulated paths. The main question is how to compute a discounted option value corresponding to the asset price path.

Broadie and Glasserman (1997) developed a stochastic random tree method to estimate the lower and upper bound of the American option value. Let h˜ i denote the payoff function for exercise at ti , which we now allow to depend on i. Let V˜ i(x) denote the value of the option at ti given Xi = xi (the option has not exercised). We are ultimately interested in V˜ 0(X0). This value is determined recursively as follows: 

V˜m(x) = h˜m(x) (3)

V˜ i−1(x) = max{h˜ i−1(x), E[Di−1,i(Xi)V˜ i(Xi)|Xi−1 = x]}, (4)

i = 1, ..., m and we have introduced the notation Di−1,i(Xi) for the discount factor from ti−1 to ti . It states that the option value at expiration is give by the payoff function h˜m; and at time (i − 1)th exercise date the option value is the maximum of the immediate exercise value and the expected present value of continuing.

As its name suggests, the random tree method is based on simulating a tree of paths of the underlying Markov chain X0, X1, ..., Xm. Fix a branching parameter b ≥ 2. From the initial state X0, simulate b independent successor states X1 1 , ..., X1 b all having the law of X1. From each X1 i , simulate b independent successors


where Z is a standard normal random variable. The parame ters were chosen so the early exercise opportunity would have significant value.
Note: the stochastic tree simulation method can be summa rized in the follow steps:
1. For each simulation run, build random tree with b branches at each time step m with S0 according to Eq. (12);
2. Estimate high and low estimators of the option using Eq.
(6) and Eq. (9) for each simulated tree;
3. Take average of all the n simulation runs as the final estimators.
Please design some new classes and reuse some of the classes using the trinomial tree project for pricing American Call and
Put options with the following parameters:
• T = 1
• S0 : 50
• K = 50
• r = 0.05
• δ = 0.08
• σ = 0.3
• Four exercise opportunities at times m = {0, T/3, 2T/3, T}
• The number of tree branches for random tree method: b = 3

For your submission, you need submit your results (out put of your program) in one PDF file and clearly explain your results for all the parts of the assignment. You will also need to provide C++ source code for the follow parts in your solutions in separate projects (Note: you need to submit source code in a zip file for each project of these four parts of the questions. Provide anReadme.txt file to document how to build the projects.

Please also note the four parts will be evaluated separately.):

I) Please price the American Call and Put options using theabove parameters using the trinomial tree method usingthe four exercising times. In this part, you will reuse the T rinomialT ree class from your homework assignment forboth American Call and Put options. [20 points]

a). Please use the T rinomialT ree class from your homework assignment. The purpose of this step is to make
sure you have a baseline solution that you can compareagainst for the following parts of the assignments.
b). Please reuse the classes provided in the random tree project.zipfile for this part of the assignment.
II) Please create RandomHighT ree and RandomLowT ree classes.

And use GetGBMNextP rice(...) function in Random.h provided in this assignment to build random trees. These two classes should have void BuildT ree() and double GetT heP rice() member functions. [30 points]

Please Note:

a). These two classes should have different algorithms to build and update theT ree member and get the option prices. Please reuse the classes provided in the random tree project.zip file for this assignment.

b). Please run 100 times to get averages of the high and low estimators of the American Call and Put option prices and compare them with the results from the T rinomialT ree

III) Please create P ayOffF actory class using the singleton pattern to register “TTCall” (Trinomial Tree American Call Option), “TTPut” (Trinomial Tree American Put Op- 9tion), “RTCallH” (Random Tree American Call Option High Estimator), “RTCallL” (Random Tree American Call Option Low Estimator), “RTPutH” (Random Tree American Put Option High Estimator), and “RTPutL” (Random Tree American Put Option Low Estimator) classes. Generate American option prices using the parameter specifiedabove. [30 points] Please Note:

a). Please use the P ayOffConstructible and P ayOffF actory (sample of these classes are provided along with this assignment in the f actory arglist solution.zip file) to manage the class registration and object creation for all the tree option pricing classes. It means that you need to register the 6 classes for the 6 IDs specified in the problem exactly e.g. ‘TTCall”, “TTPut”, “RTCallH”, “RTCallL”, ‘RTPutH”, and ‘RTPutL”.

b). Please run ArgumentList class to pass the parameters for all the class registration with the factory class. The implementation of ArgumentList class is provided in ArgList.h and ArgList.cpp respectively.

IV) Please use Observable and Observer pattern to develop a pricing report class which is an observer of all the tree based option pricers. In this part, you are required to use the QuantLib Observable and Observer abstract classes as the bases for this assignment. Please refer to the breakout exercise from Lecture 13 as an example. [20 points] Please

Note:

a). Please create new class called T reeObservable using the QuantLib Observable class as the base of the SimpleT rinomialT ree, RandomHighT ree, RandomHighT ree classes. Please also create a new class called OptionP ricingReportW riter which implements the abstract class Observer from QuantLib.

b). In the main function, you need to create an instance of the OptionP ricingReportW riter object. You need to register all the tree option pricing objects with the

OptionP ricingReportW riter object when each of these pricing objects were created by the object factory. It means that you need to register the 6 option pricing objects with the 6 option IDs specified in the prob lem e.g. “TTCall”, “TTPut”, “RTCallH”, “RTCallL”, ‘RTPutH”, and ‘RTPutL”.

c). When each of the option objects is called, the update() method of the OptionP ricingReportW riter object will be called, and it will write to the console the option pricer ID and the option value.

Homework Honor Policy: You are allowed to discuss the problems between yourselves, but once you begin writing up your solution, you must do so independently, and can not show one another any parts of your written solutions.


发表评论

电子邮件地址不会被公开。 必填项已用*标注