12. (Trinomial Method, Project) We focused in Chapters 11 and 12 on the binomial method to price...
Question:
12. (Trinomial Method, Project)
We focused in Chapters 11 and 12 on the binomial method to price one-factor plain and American options. In this exercise we are interested in creating a small software framework to do the same thing using the trinomial method. The requirements are that the resulting software base should be maintainable, reusable and extendible. We hope to achieve these ends by using design patterns and modern language features in C++. To this end, we adopt an approach similar to that used in the manufacturing industry. This is called the PDCA cycle (see Imai, 1986) and it consists of the following phases:
Plan (P phase): we determine what needs to be done, for example creating a software framework to price one-factor options using the trinomial method. This phase contains not only the plans for a new product but also plans for product and process improvements.
Do (D phase): we produce or make the software product.
Check (C phase): does the product operate according to the specifications? Is the customer satisfied? In the current context the code should produce accurate results and be efficient.
Action (A phase): process feedback and complaints from customers. This feedback is incorporated into the next planning phase. In other words, action refers to action for improvement.
A variation of PDCA is called SDCA (the ‘S’ stands for Standardisation) and it refers to the fact that we establish and stabilise a standard before embarking on a new PDCA round. In the current case this could entail applying standardised design patterns, interfaces and language features.
Answer the following questions:
a) Compare the advantages and disadvantages of the PDCA as applied to software development compared to the approach that you now take.
b) Determine which code from Chapters 11 and 12 can be reused in the current context.
In particular, examine the applicability of the lattice ADTs and mechanism functions that we used to price options using the binomial method. Can you reuse the existing software or will you need to write new code? How can the language features in C++11 help?
c) Implement the algorithm in Section 12.9. Test the code using the same examples as in Chapters 11 and 12.
d) Adapt the code in Section 12.9 to accommodate other strategies to compute jump probabilities.
The first case is when the asset price at each node can go up, stay the same or go down. The jump sizes are:
u = e????
√
2Δt, d = e−????
√
2Δt
.
The corresponding probabilities are (Haug, 2007):
pu = (
ebΔt∕2 − e−????
√
Δt∕2 e????
√
Δt∕2 − e−????
√
Δt∕2 )2 pd = (
e √
Δt∕2 − e−bΔt∕2 e????
√
Δt∕2 − e−????
√
Δt∕2 )2 pm = 1 − pu − pd where b is the cost-of-carry. We need to avoid negative probabilities (see Haug, 2007, p. 300) which occur for pm if:
???? <
√
b2Δt 2 .
This is a CRR-type trinomial tree.We also consider the alternative set of parameters:
pu = 1 6 + (b − ????
2∕2)
√
Δt 12????
2 pd = 1 6 − (b − ????
2∕2)
√
Δt 12????
2 pm = 2∕3.
Answer the following questions:
a) Integrate the above two sets of probability parameters into the framework. You can deploy universal function wrappers that we introduced in Chapter 11 to calculate the up and down jumps as with the binomial method.
b) Test the new schemes using the examples in this chapter.
c) Determine the ‘stability spectrum’ of the trinomial method by varying the option parameters and step size.
d) Test the code for European and American options.
e) Review the flexibility of the code that you have written and determine how to make your framework more flexible. How will you test the flexibility of the software?
Step by Step Answer: