Question#1.

library(plyr)
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
tickers<-c("SPY", "QQQ", "EEM", "IWM", "EFA", "TLT", "IYR", "GLD")
data.env<-new.env()
l_ply(tickers, function(sym) try(getSymbols(sym, from="2010-01-01", env=data.env), silent=T))
## 'getSymbols' currently uses auto.assign=TRUE by default, but will
## use auto.assign=FALSE in 0.5-0. You will still be able to use
## 'loadSymbols' to automatically load data. getOption("getSymbols.env")
## and getOption("getSymbols.auto.assign") will still be checked for
## alternate defaults.
## 
## This message is shown once per session and may be disabled by setting 
## options("getSymbols.warning4.0"=FALSE). See ?getSymbols for details.
stocks<- tickers[tickers %in% ls(data.env)]
data<- xts()
for(i in seq_along(stocks)){
  symbol<-stocks[i]
  data <- merge(data, Ad(get(symbol, envir=data.env)))
}
data<- xts(coredata(data), order.by = as.Date(index(data), tz=""))
head(data)
##            SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## 2010-01-04     94.13087     42.07555     35.67281     56.09659
## 2010-01-05     94.38007     42.07555     35.93174     55.90370
## 2010-01-06     94.44649     41.82175     36.00691     55.85109
## 2010-01-07     94.84521     41.84896     35.79811     56.26318
## 2010-01-08     95.16080     42.19340     36.08208     56.57005
## 2010-01-11     95.29370     42.02117     36.00691     56.34210
##            EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-04     43.40944     68.49980     32.26275       109.80
## 2010-01-05     43.44770     68.94214     32.34021       109.70
## 2010-01-06     43.63134     68.01926     32.32613       111.51
## 2010-01-07     43.46300     68.13365     32.61488       110.82
## 2010-01-08     43.80734     68.10319     32.39655       111.37
## 2010-01-11     44.16698     67.72945     32.55150       112.85

Question#2

library(fBasics)
## Loading required package: timeDate
## Loading required package: timeSeries
## 
## Attaching package: 'timeSeries'
## The following object is masked from 'package:zoo':
## 
##     time<-
## 
## Attaching package: 'fBasics'
## The following object is masked from 'package:TTR':
## 
##     volatility
sigma=cov(data)
std=sqrt(diag(sigma))
ones=rep(1,8)
one.vec=matrix(ones, ncol=1)
a=inv(sigma)%*%one.vec
b=t(one.vec)%*%a
mvp.w=a/as.numeric(b)
mvp.w
##                     [,1]
## SPY.Adjusted -0.49371905
## QQQ.Adjusted  0.37573497
## EEM.Adjusted  0.13361155
## IWM.Adjusted  0.06340693
## EFA.Adjusted  0.48794386
## TLT.Adjusted  0.07288760
## IYR.Adjusted  0.41012486
## GLD.Adjusted -0.04999072
mvp.ret<-sum((mvp.w)*colMeans(data))
mvp.ret
## [1] 12.65134
print(cov(data))
##              SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## SPY.Adjusted    3401.8926   2410.33475   125.942580   1846.05711
## QQQ.Adjusted    2410.3347   1731.70895    93.643142   1302.09670
## EEM.Adjusted     125.9426     93.64314    17.678257     73.43056
## IWM.Adjusted    1846.0571   1302.09670    73.430564   1019.96660
## EFA.Adjusted     473.8619    329.10445    23.997672    265.45829
## TLT.Adjusted     773.1779    537.76152    10.908745    403.03137
## IYR.Adjusted     797.9245    556.76620    24.078669    429.45478
## GLD.Adjusted    -551.9669   -370.66045     0.792119   -300.74451
##              EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## SPY.Adjusted    473.86193    773.17793    797.92447  -551.966916
## QQQ.Adjusted    329.10445    537.76152    556.76620  -370.660454
## EEM.Adjusted     23.99767     10.90874     24.07867     0.792119
## IWM.Adjusted    265.45829    403.03137    429.45478  -300.744511
## EFA.Adjusted     76.31504     93.83577    108.23969   -83.109688
## TLT.Adjusted     93.83577    268.21760    209.17469   -78.081570
## IYR.Adjusted    108.23969    209.17469    201.51089  -119.296035
## GLD.Adjusted    -83.10969    -78.08157   -119.29604   335.055396
print(std)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted 
##    58.325745    41.613807     4.204552    31.936916     8.735848 
## TLT.Adjusted IYR.Adjusted GLD.Adjusted 
##    16.377350    14.195453    18.304518

Question#3

data.weekly<-data[endpoints(data, on="weeks", k=1),]
library(fBasics)
sigma=cov(data.weekly)
std=sqrt(diag(sigma))
ones=rep(1,8)
one.vec=matrix(ones, ncol=1)
a=inv(sigma)%*%one.vec
b=t(one.vec)%*%a
mvp.w=a/as.numeric(b)
mvp.w
##                     [,1]
## SPY.Adjusted -0.49237335
## QQQ.Adjusted  0.37049779
## EEM.Adjusted  0.14678672
## IWM.Adjusted  0.06909011
## EFA.Adjusted  0.47167656
## TLT.Adjusted  0.07559435
## IYR.Adjusted  0.41061688
## GLD.Adjusted -0.05188906
mvp.ret<-sum((mvp.w)*colMeans(data.weekly))
mvp.ret
## [1] 12.65396
print(cov(data.weekly))
##              SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## SPY.Adjusted    3417.0088   2421.70264    127.46711   1852.71568
## QQQ.Adjusted    2421.7026   1740.31457     94.78025   1306.99096
## EEM.Adjusted     127.4671     94.78025     17.97815     74.16916
## IWM.Adjusted    1852.7157   1306.99096     74.16916   1022.84958
## EFA.Adjusted     475.4664    330.34008     24.35280    266.19307
## TLT.Adjusted     775.6326    539.56888     11.16196    404.06460
## IYR.Adjusted     801.7817    559.78527     24.47288    431.23153
## GLD.Adjusted    -555.3025   -373.34353      1.00087   -302.70342
##              EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## SPY.Adjusted    475.46638    775.63261    801.78169   -555.30253
## QQQ.Adjusted    330.34008    539.56888    559.78527   -373.34353
## EEM.Adjusted     24.35280     11.16196     24.47288      1.00087
## IWM.Adjusted    266.19307    404.06460    431.23153   -302.70342
## EFA.Adjusted     76.61208     94.21768    108.67338    -83.14663
## TLT.Adjusted     94.21768    267.84553    209.66999    -79.01053
## IYR.Adjusted    108.67338    209.66999    202.39557   -119.87612
## GLD.Adjusted    -83.14663    -79.01053   -119.87612    336.61902
print(std)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted 
##    58.455186    41.717078     4.240065    31.982020     8.752833 
## TLT.Adjusted IYR.Adjusted GLD.Adjusted 
##    16.365987    14.226580    18.347180

Question#4

data.monthly<- data[endpoints(data, on="months", k=1),]
library(fBasics)
sigma=cov(data.monthly)
std=sqrt(diag(sigma))
ones=rep(1,8)
one.vec=matrix(ones, ncol=1)
a=inv(sigma)%*%one.vec
b=t(one.vec)%*%a
mvp.w=a/as.numeric(b)
mvp.w
##                     [,1]
## SPY.Adjusted -0.48934914
## QQQ.Adjusted  0.36662497
## EEM.Adjusted  0.17000927
## IWM.Adjusted  0.06653477
## EFA.Adjusted  0.45576386
## TLT.Adjusted  0.07708740
## IYR.Adjusted  0.41304768
## GLD.Adjusted -0.05971881
mvp.ret<-sum((mvp.w)*colMeans(data.monthly))
mvp.ret
## [1] 11.99433
print(cov(data.monthly))
##              SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## SPY.Adjusted    3502.2075   2492.08504   133.688104   1883.24318
## QQQ.Adjusted    2492.0850   1797.33514    99.670951   1333.01922
## EEM.Adjusted     133.6881     99.67095    18.309770     76.58382
## IWM.Adjusted    1883.2432   1333.01922    76.583824   1031.44500
## EFA.Adjusted     485.9953    339.04825    25.023709    269.83824
## TLT.Adjusted     781.3176    545.27807    12.056095    404.84961
## IYR.Adjusted     820.5909    575.83181    26.037710    438.22649
## GLD.Adjusted    -564.2669   -381.21491     2.713118   -305.69449
##              EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## SPY.Adjusted    485.99532    781.31764    820.59085  -564.266873
## QQQ.Adjusted    339.04825    545.27807    575.83181  -381.214908
## EEM.Adjusted     25.02371     12.05610     26.03771     2.713118
## IWM.Adjusted    269.83824    404.84961    438.22649  -305.694491
## EFA.Adjusted     77.85999     95.12721    110.91904   -82.608933
## TLT.Adjusted     95.12721    266.66468    210.33454   -82.138261
## IYR.Adjusted    110.91904    210.33454    206.12464  -120.697396
## GLD.Adjusted    -82.60893    -82.13826   -120.69740   341.428281
print(std)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted 
##    59.179452    42.394990     4.278992    32.116117     8.823831 
## TLT.Adjusted IYR.Adjusted GLD.Adjusted 
##    16.329871    14.357042    18.477778

Question#5

options(digits=5)
firm_data1 = read.table('F-F_Research_Data_Factors.txt', header = TRUE, sep = ',')
head(firm_data1)
##           Mkt.RF.....SMB.....HML......RF
## 1 192607    2.96   -2.30   -2.87    0.22
## 2 192608    2.64   -1.40    4.19    0.25
## 3 192609    0.36   -1.32    0.01    0.23
## 4 192610   -3.24    0.04    0.51    0.32
## 5 192611    2.53   -0.20   -0.35    0.31
## 6 192612    2.62   -0.04   -0.02    0.28
names(firm_data1)
## [1] "Mkt.RF.....SMB.....HML......RF"