Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
MATH5350M: Computations in Finance
Implement a function responsible for inputting data. This function should be informative,
user friendly and must verify correctness of arguments. You are expected to deal with
situations when an inputted parameter is clearly wrong: for example, S0 ≤ 0. Don’t try
to deal with situations when a user inputs a letter when a number is needed. The header
of the function is given below
void input_data(double& S_0, double& r, double& sigma,
double& T, double& K, int& n);
The meaning of parameters is as follows:
• S_0 – initial price of the stock, i.e. S0,
• r – risk-free interest rate (per annum),
• sigma – the volatility of the stock price σ (per annum),
• T – expiry time of the option that expires last,
• K – strike price K of the American put option,
• n – number of periods in the binomial tree (M in the slides).
Part 2. The approximate CRR method (20 marks)
Implement the pricing of the American put option on a recombining binomial tree. Use the
approximate CRR method for the calibration of the binomial model. The computed price
should be returned by the function. The header of the function that you will implement is
provided in the file CW1-student.cc and below for your convenience:
double compute_price_approx_CRR(double S_0, double r, double sigma,
double T, double K, int n);
The parameters have the same meaning as in Part 1. This function should be standalone
(ready to use in other programmes without your function input data), so it must perform
its own verification of parameters. It does not mean that you are relieved from checking
correctness of parameters in the function input data! The above function must not communicate
with a user or print anything on the screen. The only way to inform about errors
is to call function error(…).
2
MATH5350M: Computations in Finance
Part 3. Verification (15 marks)
An important (and difficult) part of computations in finance is verification: How can you
be sure that you can rely on your program? Imagine that you are planning to do some big
trades based on the results of your program.
Verify (as well as you can) that your program produces correct prices. Think about whether
there are parameter values when you know the result, perhaps only approximately or in
certain limits. Document your verification process so that your hypothetical manager may
be sure that she can rely on your code. Your documentation must be concise (don’t produce
20 screenshots) but detailed enough to give your manager confidence.
Part 4. Results (15 marks)
Compute the price of a 10-month American put option with strike price 45 when the
underlying stock price is 51, the risk-free interest rate is 4% per annum and the volatility
is 30% per annum. Use a binomial tree with 100 periods.
Make a plot showing how the computed price varies as you change the number of periods,
similar to page 45 of the slides of Lecture 1. Based on your results, what is the price of
the option? Give a rough estimate of the accuracy of your answer and explain how you
arrived at it.
Part 5. Centring the tree (15 marks)
As discussed during the lectures, we can slightly modify the tree so that the strike price
is always in the middle of the tree to eliminate the oscillations in the plot. Implement
a function compute_price_centred_tree with the same arguments as the function
compute_price_approx_CRR in Part 2. This function should compute the price of an
American put option using a centred binomial tree. Plot the price computed using this
function, similar to page 47 of the slides.
Part 6. Richardson extrapolation (20 marks)
Show that the prices computed in the previous part satisfy P(M) ≈ P +AM−1
for large M,
where P(M) denotes the price computed a binomial tree with M periods, P is the true
price, and A is a constant. This suggests the use of Richardson extrapolation.
Implement a function compute_price_extrapolation with the same arguments as in
Part 2 and 5 which computes the price of an American put option using Richardson extrapolation.
Plot the price computed using this function, similar to page 50 of the slides.
Based on your results, what is the price of the option? Give a rough estimate of the
accuracy of your answer and explain how you arrived at it.
MATH5350M: Computations in Finance
Directions for submission
You need to submit a report and the code.
Report: Your report must be typed in Microsoft Word or Latex. Hand-written reports
or reports containing photos of hand-written notes will not be accepted. Do not include
the code in your report. Structure your report as the assignment (Part 3, Part 4, Part 5,
Part 6), leaving out Part 1 and Part 2 which do not require an answer.
Your report (as a pdf file) must be uploaded in the Submit My Work area using the
TurnitIn submission tool entitled “Report submission for Coursework 1”.
Code: Before submission, clean up the code, make sure that comments in the programme
make following the code easy, check that the programme compiles. Make sure you have
not shared your code or a piece of thereof with anyone else as this qualifies as plagiarism.
The C++ file CW1-student.cc (NO pdf, doc, ps, etc.) must be uploaded in the Submit
My Work area using the assignment submission tool entitled “CW1-student.cc submission
for Coursework 1”