In the previous programming assignment you used Dynamic Programming to compute the price of an American-Option to overcome the inefficiency of Recursive methods that do the same. You were able to comfortably run large number of Divisions, to get at an accurate estimate of the price.
In this assignment, you are going to make the Recursive methods efficient by using Memoization. You have done this already in the Programming Assignment that computed the price-of-admission to a stylized Card-Game. You are going to do the same – only this time, it is for Recursive procedures that compute the price of Options.
Write a C++ program that computes the price of an
1. European Option, and
2. American Option,
which runs on a command-line, and takes the following variables as input (maintain this order; otherwise, you will loose points!)
1. Expiration,
2. #Stages,
3. Risk-free rate (Continuous compounding) ,
4. Volatility (expressed as a fraction of initial price of underlying),
5. Initial Price of underlying, and
6. Strike Price.
using the Trinomial Model. It is imperative that your code uses memoization, so that we can run large number (≈ 1000) of stages.
The European Option Price has be compared with the Black-Scholes Formula (cf. figure 1). For the American Option Price, I am looking for something like what is shown in figure 2. You can ignore the put-call parity verification, if you wish.
1
Figure 1: Running-time illustration for pricing an European Option using a 5000 stage (Memoized) Trinomial Model.
Figure 2: Running-time illustration for pricing an American Option using a