联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> C/C++编程C/C++编程

日期:2021-06-07 10:05

Computational Finance with C++

Coursework

Handed out: 17/05/2021

Due: 1pm – 7/06/2021

Exercise 1.

The aim of this exercise is to construct a portfolio optimization solver and perform

backtesting to assess the performance 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 contains 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 insample

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

1

time

time

100 days 12 days

100 days 12 days 12 days

out of

sample

in

sample

out of

sample

in

sample

Figure 1: Rolling back-testing procedure.

to estimate the mean and covariance matrix. The mean return for asset i can

be estimated as follows:

rˉi =

1

n

Xn

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

Xn

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,

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.

(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


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp