ECMT2130: Semester 2, 2020 assignment

University of Sydney

Instructions

• This assignment accounts for 15% of your final result for the course. It will be

marked out of a maximum total of 45 points.

• This is an individual assignment. You are not allowed to copy a classmate’s assignment (or to borrow the bulk of the material from a classmate’s assignment). You are

required to perform the full assignment on your own and hand in independently.

• This assignment is due by 5pm on Friday November 6, 2020. Upload your assignment through Canvas.

• Upload a single compressed (ZIP format) file containing your R scripts, your data,

and your report (as a PDF document).

• When decompressed (unzipped) all documents should be in the one folder. The

PDF report, and the scripts must all include your student ID.

• The file name for the single compressed file must also include your student ID. The

single compressed file that you upload to the Canvas assignment must have a “.zip”

file extension.

• Be concise in your report (limit it to 1,500 words). Use tables and graphs where

appropriate.

• The assignment involves preparing a report for a hypothetical “client” that is a large

financial institution with the ability to borrow and lend at or very near to interbank interest rates. If you have questions to put to the “client”, raise them on the

Assignment topic of the Ed discussion forum. For fairness, questions for the “client”

will not be answered in any other forum (tutorials/consultation hours/emails etc.).

1

Background

You have been asked to assess an equity trading algorithm. Your client has dismissed the

quant. responsible for designing the algorithm because the documentation was inadequate. The client now wants to determine whether they should, adopt, modify and then

adopt, or write-off the cost of developing the trading algorithm.

The trading algorithm has been implemented in a set of R scripts. You will need to be

able to run these (and modify them in places) to gather the information required for

your report. The scripts are documented in more detail below.

Each month, the algorithm rebalances the weights on a selection of Australian equities

to form a fully-invested portfolio.

Your report must assess:

- the suitability of the input data; [15/45 points]
- the trading algorithm itself; and [10/45 points]
- the performance evaluation of the trading algorithm when used to manage a portfolio with an initial value of $10,000,000. [10/45 points]

The report should also suggest ways in which the algorithm could be improved if it is

adopted and reasons for not using it if the recommendation is to not use the trading

algorithm. [5/45 points]

Conclude your report with a recommendation for your client about how to proceed with

the trading algorithm. [5/45 points]

In evaluating the input data:

• State the stocks that the trading algorithm is allowed to invest in.

• Identify any flaws in or problems with the data sourced from Yahoo Finance and

the Reserve Bank of Australia.

• Describe the properties of the data (using graphs where appropriate) and their

implications for the trading algorithm. In your analysis of the data: - Rank the individual stocks by their average monthly excess returns over the

risk free rate. - Rank the individual stocks by their monthly excess return standard deviations.
- Rank the individual stocks by their Sharpe ratios.
- Examine the correlations between the excess returns on the stocks.
- Assess the appropriateness of assuming that excess returns are normally distributed.

2 - Address the stability over time of the distribution of excess returns.

• Identify any extreme outliers and assess whether they have been suitably handled

in the data preparation process.

• Assess the adequacy of the way in which monthly returns have been computed.

• Assess the adequacy of the way in which missing values have been handled.

In evaluating the trading algorithm:

• Describe the features of the trading algorithm and their impact on the portfolio

weights.

• Indicate any features of the trading algorithm or its development process that are

likely to compromise the informativeness of its performance assessment.

In evaluating the performance assessment for the trading algorithm:

• State how likely it is that the predicted profitability of the trading algorithm will

be informative about performance into the future and explain your view.

• Include in you report, a 1-month-ahead 99th percentile Value-at-Risk measure computed for the portfolio that would be held at the end of the available data if the

trading algorithm were to be adopted for an initial investment of $10,000,000.

Explain and justify your decisions when deciding how to compute the VaR.

If you suggest improvements to the algorithm, describe and motivate the recommended

changes in your report.

3

1 Raw data used by the trading algorithm

The stocks that are included in the portfolio managed by the trading algorithm are based

upon your student ID.

For all students, all 9 stocks from Table 1 are included in the set of assets that can be

included in the portfolio by the trading algorithm.

Table 1: companies in common

Yahoo Finance Code Company

CBA.AX Commonwealth Bank

CSL.AX CSL Limited

BHP.AX BHP Group Limited

WBC.AX Westpac Banking Corp

NAB.AX National Aust. Bank

ANZ.AX ANZ Banking Group Limited

WOW.AX Woolworths Group Limited

TLS.AX Telstra Corporation

WES.AX Wesfarmers Limited

Also include between one and three additional stocks from table 2. The last three digits

of your SID number determine which stocks from table 2 are investment options for the

trading algorithm that you are to review.

Table 2: individual-specific companies

SID digit Yahoo Finance Code Company

0 MQG.AX Macquarie Group Limited

1 RIO.AX RIO Tinto Limited

2 WPL.AX Woodside Petroleum

3 NCM.AX Newcrest Mining

4 QAN.AX Qantas Airline

5 ALL.AX Aristocrat Leisure

6 IAG.AX Insurance Australia

7 STO.AX Santos Limited

8 HVN.AX Harvey Norman Retailer

9 SUN.AX Suncorp Group Limited

For example, if you SID is 47033566, the trading algorithm would also be able to include

Aristocrat Leisure (ALL.AX) because the third last digit is 5. The trading algorithm would

also be able to include Insurance Australia (IAG.AX) because both the second last and last

digits are 6.

All of the stock data is available from Yahoo Finance. For each stock, you can download

a CSV file that will include columns for the open, high, low, close and “adj. close”. The

4

data that is used for equity return calculation is the “adj. close” data, which is adjusted

so that the returns are not impacted by dividends, stock splits and other discretionary

activities of the company.

The trading algorithm uses the 30-day bank bill swap rate as the risk-free rate. This

“risk-free” rate has been sourced from the Reserve Bank of Australia’s historical data

publication using the older 30-day bank bill rates from 1976 to 2010 and combining

it with the more recent data from the RBA’s interest rate tables, specifically the rates

from 2011 onwards. The data for the 30-day bank bill rate, “FIRMMBAB30D”, has been

retained from these sources in the spreadsheet “30dayBBSW.xlsx”.

The retrieval of the latest data from Yahoo is done for you by the R script “Get Raw

Data.R” so only download the CSV files if you want to validate the raw data gathering

process. You just need to update it to reflect the list of stocks that can be included in

the portfolio (based on your SID) by the trading algorithm. The same script also loads

the risk free rate data from the Excel spreadsheet and combines it into an extended time

series with the adjusted stock prices.

2 Transaction costs

The trading algorithm assumes a transaction cost associated with trading risky assets.

Specifically, when purchases or sales of a dollar amount of a risky asset will incur a

transaction cost of 0.1% of the value of the amount purchased or sold. This has been

taken into account in the design of the trading algorithm and its performance assessment.

3 Explanation of R scripts

Before he departed, the quant. who designed the trading algorithm said that the code

for the algorithm is “self-documenting”. It has been implemented in 6 separate R scripts

that are to be run in a specific order. - “Get Raw Data.R”, downloads the latest data from Yahoo and merges it with data

from the RBA before saving it as an R dataset to a file in the same directory as the

script itself. This script also saves the close price data in a second R data file, for

use in trading algorithm performance analysis. - “Prepare Data.R”, computes monthly returns on the equity data and saves the data

to two files, one containing all the data and one containing only the training data

set. - “Trading Algorithm Using Training Data.R”, uses the trading algorithm to produce

monthly updates to portfolio weights for the risk-free asset and the risky stocks

using the training data set.

5 - “Calculate Profits Over Training Data.R”, computes the portfolio value and the earnings from each asset for every month of portfolio rebalances based on the training

data set. - “Trading Algorithm Using Heldback Data.R”, uses the trading algorithm to produce

monthly updates to portfolio weights for the risk-free asset and the risky stocks

using the held-back data set. - “Calculate Profits Over Heldback Data.R”, computes the portfolio value and the

earnings from each asset for every month of portfolio rebalances based on the heldback data set.

The scripts, along with the spreadsheet containing the RBA interest rates data have been

made available to you in a compressed ZIP archive file that contains the relevant files in

a folder. Extract the ZIP archive. Using R Studio, open the file:

“Assignment R.Rproj”

This will provide you with access to all the scripts and data in the one folder.

Before leaving his employer, the quant. described the trading algorithm, saying that it

was developed by o ptimising performance over the training data set and then evaluating

it using the held-back data, from the end of the training data set to the end of 2019. It

was based upon Markowitz-style portfolio optimisation, doing monthly updates of the

tangency portfolio, computing the capital allocation line, and then targeting a specific

expected return along that capital allocation line.

To mitigate risk, the algorithm then overrides the weight on the risk-free asset, if necessary, capping it at -50%. This risk mitigation step ensured that the investor never

borrowed more than 50% of the amount invested in risky assets.

Transaction costs were too small to factor into the portfolio optimisation process. Instead

they were accounted for by adjusting the weight on the risk-free asset, to reflect the costs

of the transactions necessary to rebalance the investments in the risky assets.

6