0. Gather the data. Login in to WRDS, go to the data vendor CRSP, and find the daily stock returns data. Download the daily stock returns for the ticker symbols SPY (SPDR S&P 500 ETF Trust), EEM (iShares MSCI Emerging Markets ETF), HYG (iShares iBoxx $ High Yield Corporate Bond ETF), FXI (iShares China Large-Cap ETF), USO (United States Oil Fund, LP), and GLD (SPDR Gold Shares) for the period January 1, 2016 through December 31, 2019. (The first return should be for January 4, 2016, which was the first trading date in 2016, and the last return should be for December 31, 2019.)
1. Compute continuously compounded or log returns. The returns you download from CRSP will be simple returns. Convert them to continuously compounded returns. What are the average continuously compounded returns for each of the six series?
2. Estimate a DCC model. Use the six return series to estimate the DCC(1,1) model with normally distributed shocks. In doing this you should model the variance of each of the return series using a GARCH(1,1) model with normally distributed shocks, and assume that the means of the daily returns are zero.
(a) What are the parameter estimates ω, α, and β of each of the six GARCH(1,1) models? (Your answer should consist of 18 numbers.)
(b) What are the parameter estimates α and β of the DCC(1,1) model? (Your answer should consist of two numbers.)
Remarks. I suggest that you use the R package rmgarch, which includes a function dccfit() that will estimate the DCC model. To use dccfit(), you must first use dccspec() to specify the model. To use dccspec(), you should first use multispec() to specify the six GARCH processes for the six return series. To use multispec(), you should first use ugarchspec() to specify the GARCH model for each of the return series. That is, you should do something like:
##specify a GARCH(1,1) model assuming the mean returns are zero
uspec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1,1)),
mean.model = list(armaOrder = c(0,0), include.mean = FALSE), distribution.model = "norm")
## Combine the univariate specifications of the 6 GARCH models marginspec <- multispec(replicate(6, uspec))
1
Finance 567 Spring 2020 Financial Risk Management Neil D. Pearson
## Create DCC(1,1) specification
mspec <- dccspec(marginspec, dccOrder = c(1,1), model = "DCC", distribution = "mvnorm")
## Fit the DCC(1,1) model (returns are in a matrix returns[]) mod <- dccfit(mspec,returns[,1:6])
The package rmgarch also includes functions to simulate GARCH and DCC models, but I will not ask you to use them on this homework.
3. Principal components. Now let’s carry out a principal components analysis of the returns of the six ETFs. Carry out the analysis on the covariance matrix, not the correlation matrix. In computing the covariance matrix, assume that the expected returns of the stocks are zero and use the equally-weighted estimator
𝑇𝑇
1
Σ = 𝑟𝑟𝑡𝑡𝑟𝑟𝑡𝑡′,
𝑇𝑇
𝑡𝑡=1
where rt ∈ℜ6 is a vector of the returns of the six ETFs on date t.
(a) First use the R function eigen() to compute the eigenvectors and eigenvalues. (You will first need to compute the covariance matrix of the returns.) What is the standard deviation of the first principal component?
(b) Suppose there is a one-standard deviation change in the first principal component, and the second through sixth principal components remain unchanged. In this scenario, what is the return on the FXI?
(c) Next use the R function prcomp() to carry out the principal components analysis of the returns. What fraction of the variance of the return on the SPY is explained by the first principal component?
(d) Use the first three principal components to estimate the covariance matrix of the returns on the six ETFs. Based on this estimate of the covariance matrix, what is the covariance of the returns between the SPY and FXI?