# Read data
df <- read.csv("myetf4.csv", stringsAsFactors = FALSE)
df$Index <- as.Date(df$Index, format="%Y/%m/%d")
# Filter in-sample data
df_insample <- df[df$Index >= as.Date("2015-12-14") & df$Index <= as.Date("2018-12-28"), ]
prices_xts <- xts(df_insample[, -1], order.by = df_insample$Index)
# Q1
ret_daily <- na.omit(diff(prices_xts) / lag(prices_xts))
mean_daily <- colMeans(ret_daily)
cov_daily <- cov(ret_daily)
ones <- rep(1, ncol(cov_daily))
# Solve for weights
inv_cov_daily <- solve(cov_daily)
w_gmvp_daily <- inv_cov_daily %*% ones / as.numeric(t(ones) %*% inv_cov_daily %*% ones)
w_gmvp_daily <- as.vector(w_gmvp_daily)
names(w_gmvp_daily) <- colnames(prices_xts)
# Performance
ret_gmvp_daily <- sum(w_gmvp_daily * mean_daily)
sd_gmvp_daily <- sqrt(as.numeric(t(w_gmvp_daily) %*% cov_daily %*% w_gmvp_daily))
print(round(w_gmvp_daily, 4))
## tw0050 tw0056 tw006205 tw00646
## -0.2194 0.7284 0.1076 0.3834
Daily Return: 2.54^{-4}
Daily Std Dev: 0.005905
# Q2
prices_monthly <- prices_xts[endpoints(prices_xts, on = "months")]
ret_monthly <- na.omit(diff(prices_monthly) / lag(prices_monthly))
mean_monthly <- colMeans(ret_monthly)
cov_monthly <- cov(ret_monthly)
inv_cov_monthly <- solve(cov_monthly)
w_gmvp_monthly <- inv_cov_monthly %*% ones / as.numeric(t(ones) %*% inv_cov_monthly %*% ones)
w_gmvp_monthly <- as.vector(w_gmvp_monthly)
names(w_gmvp_monthly) <- colnames(prices_xts)
ret_gmvp_monthly <- sum(w_gmvp_monthly * mean_monthly)
sd_gmvp_monthly <- sqrt(as.numeric(t(w_gmvp_monthly) %*% cov_monthly %*% w_gmvp_monthly))
print(round(w_gmvp_monthly, 4))
## tw0050 tw0056 tw006205 tw00646
## 0.0032 0.4740 0.0012 0.5216
Monthly Return: 0.005734
Monthly Std Dev: 0.024904
# Q3
w_tp_monthly <- inv_cov_monthly %*% mean_monthly / as.numeric(t(ones) %*% inv_cov_monthly %*% mean_monthly)
w_tp_monthly <- as.vector(w_tp_monthly)
names(w_tp_monthly) <- colnames(prices_xts)
ret_tp_monthly <- sum(w_tp_monthly * mean_monthly)
sd_tp_monthly <- sqrt(as.numeric(t(w_tp_monthly) %*% cov_monthly %*% w_tp_monthly))
print(round(w_tp_monthly, 4))
## tw0050 tw0056 tw006205 tw00646
## 1.3051 -0.1577 -0.8475 0.7002
Tangency Monthly Return: 0.01809
Tangency Monthly Std Dev: 0.044236