Portfolio Analysis
Portfolio Analysis
symbols <-c("BABA","IBM","VIPS","GOOG","MSFT","GE","WFC","AMZN","JD")
days<-252
stock <- list();daily.return<-list()
fraction<-matrix(NA,nrow=length(symbols),ncol=1)
for (i in 1:length(symbols)) {
stock[[i]] <- tail(getSymbols(symbols[i],src="yahoo",return.class="xts",auto.assign=FALSE),days)
daily.return[[i]] <- periodReturn(stock[[i]],period='monthly')
}
##
##
##
##
##
##
##
##
##
daily.return<-as.data.frame(daily.return)
colnames(daily.return)<-symbols
for (i in 1:length(symbols)) {
fraction[i,1]<-sum(solve(cov(daily.return))[i,])/sum(solve(cov(daily.return)))
}
rownames(fraction)<-symbols
expectation<-colMeans(daily.return)%*%fraction
risk<-sd(as.matrix(daily.return) %*% fraction)
fraction
##
##
##
##
##
##
##
##
##
##
BABA
IBM
VIPS
GOOG
MSFT
GE
WFC
AMZN
JD
[,1]
0.022436456
1.009465335
-0.007964852
0.428176360
-0.537134017
0.653694881
-0.288443107
-0.144980627
-0.135250429
expectation
##
[,1]
## [1,] -0.01249279
risk
## [1] 0.02195758
plot(risk,expectation,col="red",pch=19,xlab="Risk",ylab="Return",
ylim=c(min(colMeans(daily.return),expectation),max(colMeans(daily.return),expectation)),
xlim=c(min(sqrt(diag(var(daily.return))),risk),max(sqrt(diag(var(daily.return))),risk)))
abline(h=0,col="red")
for (i in 1:length(symbols)){
points(sd(daily.return[,i]),mean(daily.return[,i]),col="blue",pch=17)
text(sd(daily.return[,i]),mean(daily.return[,i]),colnames(daily.return)[i])
}
0.02
GOOG
GE
MSFT
JD
0.00
WFC
VIPS
IBM
0.02
Return
0.04
0.06
AMZN
BABA
0.02
0.04
0.06
0.08
Risk
0.10
0.12
0.14