Computational Finance with C++ Coursework Due: 2pm – 1/06/2018 Exercise 1. The aim of this exercise is to construct a portfolio optimization solver and perform backtesting to assess the performance of...

na


Computational Finance with C++ Coursework Due: 2pm – 1/06/2018 Exercise 1. The aim of this exercise is to construct a portfolio optimization solver and perform backtesting to assess the performance of the Markowitz model. You are given a file containing returns from 83 of the FTSE 100 companies. The data is contained in a file called "assets_returns.csv". You are also given three files to help you read the data. The two files csv.h and csv.cpp contain a function that read files in the csv format. An example of how to use this function is given in read_data.cpp. For the given dataset, compute the solutions using a rolling in-sample window of 100 returns observations. Set the in-sample window on the first 100 time periods, then select the portfolio by solving the Markowitz model for a range of target returns. Then evaluate the performance of each portfolio on the following 12 (out-of-sample) periods. Then update the in-sample window, with the inclusion of the previous 12 out-of-sample periods and the exclusion of the first 12 periods of the previous in- sample window. Then rebalance the portfolio by solving the model again, and repeat until the end of the dataset (see Figure below). The three parts are parameter estimation, portfolio selection, and backtesting. These three steps are described in more detail below. (A) Parameter Estimation: For the 83 companies you are given returns for 700 days. You will use the data in a rolling fashion described above. The first part will be used to perform parameter estimation. You will need to provide functions to estimate the mean and covariance matrix. The mean return for asset i can 1 time time 100 days 12 days 100 days 12 days12 days out of sample in sample out of sample in sample Figure 1: Rolling back-testing procedure. be estimated as follows: r̄i = 1 n n∑ k=1 ri,k . where ri,k is the return of asset i on day k, and n is the number of days used in the in-sample window for parameter estimation (in this case 100). The (i,j)-th entry of the covariance matrix can be calculated with the help of the following formula: Σij = 1 n− 1 n∑ k=1 (ri,k − r̄i)(rj,k − r̄j) . The estimated covariance matrix will be denoted by Σ and the estimate returns by r̄. (B) Portfolio Optimization: It was shown in the lecture that the optimal portfolio weights (w) can be obtained by solving the following system of linear equations, Σ −r̄ −e−r̄> 0 0 −e> 0 0  wλ µ  =  0−r̄P −1  . Where λ and µ are the Lagrange multipliers, and r̄P is the target return, e represents a vector of ones. Denote the system of linear equations as Qx = b. Then the following algorithm (called the conjugate gradient method) can be used to solve it. A typical tolerance � is 10e− 6. 2 Algorithm 1: Conjugate Gradient Method – Quadratic Programs Input : Initial point x0, matrix Q, right hand side vector b, and solution tolerance �. 0. Initialize: s0 = b−Qx0, p0 = s0. 1. For k = 0, 1, . . . , until s>k sk ≤ � do: αk = s>k sk pTkQpk xk+1 = xk + αkpk sk+1 = sk − αkQpk βk = s>k+1sk+1 s>k sk pk+1 = sk+1 + βkpk (C) Backtesting is the process of testing a trading strategy on relevant historical data to ensure its viability before the trader risks any actual capital. In the final part of the coursework you will evaluate the performance of your portfolio. Construct a number of portfolios with different target returns using the in-sample dataset. Then compute the average out of sample return, and covariance of the asset. To be precise, let w̄ denote the optimal portfolio, r̄ denote the average return over the out-of-sample period, and Σ denote the out of sample covariance matrix. The r̄>w, and w>Σw> are the actual average returns and covariance of the portfolio. Evaluation: Write a report describing the classes you developed to solve the problem described above. Your report should contain the following sections: 1. Software Structure: Describe the classes you developed and how they are linked. For this purpose you can use simple diagrams like the ones we used in class. 2. Evaluation: Describe the performance of the Markowitz model for the different target returns. You should compute the returns for 20 portfolios with different returns (from 0.0% to 10%). Use figures and tables to illustrate your findings. 3 3. Appendix: In the Appendix you should include your code. Please make sure it is well documented. 4
May 30, 2020
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here