Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due
FE545 Final Exam
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
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)
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
• 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]
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]
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
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
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.