title: “Last Exam Work” author: “Sean Birchall” date: “5/3/2017” output: html_document

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.
library(xts)

data.AMZN <- getSymbols("AMZN", from = "2010-12-31", to = "2013-12-31", auto.assign = FALSE)
##     As of 0.4-0, 'getSymbols' uses env=parent.frame() and
##  auto.assign=TRUE by default.
## 
##  This  behavior  will be  phased out in 0.5-0  when the call  will
##  default to use auto.assign=FALSE. getOption("getSymbols.env") and 
##  getOptions("getSymbols.auto.assign") are now 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 more details.
data.YHOO <- getSymbols("YHOO", from = "2010-12-31", to = "2013-12-31", auto.assign = FALSE)
data.IBM <- getSymbols("IBM", from = "2010-12-31", to = "2013-12-31", auto.assign = FALSE)
data.GSPC <- getSymbols("^GSPC", from = "2010-12-31", to = "2013-12-31", auto.assign = FALSE)

multi <- data.AMZN[, 6] # Need to create a new data object before cbinding
multi <- cbind(multi, data.GSPC[, 6], data.YHOO[, 6], data.IBM[, 6])
 
period.ret<-multi[c(1,nrow(multi)),]
period.ret
##            AMZN.Adjusted GSPC.Adjusted YHOO.Adjusted IBM.Adjusted
## 2010-12-31        180.00       1257.64         16.63     125.8031
## 2013-12-31        398.79       1848.36         40.44     169.4835
rets<-lapply(period.ret,Delt)
rets
## $AMZN.Adjusted
##            Delt.1.arithmetic
## 2010-12-31                NA
## 2013-12-31            1.2155
## 
## $GSPC.Adjusted
##            Delt.1.arithmetic
## 2010-12-31                NA
## 2013-12-31         0.4697051
## 
## $YHOO.Adjusted
##            Delt.1.arithmetic
## 2010-12-31                NA
## 2013-12-31           1.43175
## 
## $IBM.Adjusted
##            Delt.1.arithmetic
## 2010-12-31                NA
## 2013-12-31         0.3472126
rets<-data.frame(rets)
rets
##            Delt.1.arithmetic Delt.1.arithmetic.1 Delt.1.arithmetic.2
## 2010-12-31                NA                  NA                  NA
## 2013-12-31            1.2155           0.4697051             1.43175
##            Delt.1.arithmetic.3
## 2010-12-31                  NA
## 2013-12-31           0.3472126
rets<-rets[2,]*100
names(rets)<-paste(c("AMZN","GSPC","YHOO","IBM"))
rets
##              AMZN     GSPC    YHOO      IBM
## 2013-12-31 121.55 46.97051 143.175 34.72126
i.AMZN<-50000
i.GSPC<-10000
i.YHOO<-30000
i.IBM<-10000
w.AMZN<-i.AMZN/(i.AMZN+i.GSPC+i.YHOO+i.IBM)
w.AMZN
## [1] 0.5
w.GSPC<-i.GSPC/(i.AMZN+i.GSPC+i.YHOO+i.IBM)
w.GSPC
## [1] 0.1
w.YHOO<-i.YHOO/(i.AMZN+i.GSPC+i.YHOO+i.IBM)
w.YHOO
## [1] 0.3
w.IBM<-i.IBM/(i.AMZN+i.GSPC+i.YHOO+i.IBM)
w.IBM
## [1] 0.1
port.ret.4asset<-w.AMZN*rets$AMZN+w.GSPC*rets$GSPC+
  w.YHOO*rets$YHOO+w.IBM*rets$IBM
port.ret.4asset
## [1] 111.8967
wgt<-c(0.5,0.1,0.3,0.1)
mat.wgt<-matrix(wgt,1)
mat.wgt
##      [,1] [,2] [,3] [,4]
## [1,]  0.5  0.1  0.3  0.1
ret<-c(rets$AMZN,rets$GSPC,rets$YHOO,rets$IBM)
mat.ret<-matrix(ret,4)
mat.ret
##           [,1]
## [1,] 121.55001
## [2,]  46.97051
## [3,] 143.17499
## [4,]  34.72126
port.ret<-mat.wgt%*%mat.ret
port.ret
##          [,1]
## [1,] 111.8967
data.AMZN[c(1:3,nrow(data.AMZN)),]
##            AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume
## 2010-12-31    181.96    182.30   179.51     180.00     3451900
## 2011-01-03    181.37    186.00   181.21     184.22     5331400
## 2011-01-04    186.15    187.70   183.78     185.01     5031800
## 2013-12-31    394.58    398.83   393.80     398.79     1996500
##            AMZN.Adjusted
## 2010-12-31        180.00
## 2011-01-03        184.22
## 2011-01-04        185.01
## 2013-12-31        398.79
data.YHOO[c(1:3,nrow(data.YHOO)),]
##            YHOO.Open YHOO.High YHOO.Low YHOO.Close YHOO.Volume
## 2010-12-31     16.74     16.76    16.47      16.63     7754500
## 2011-01-03     16.81     16.94    16.67      16.75    17684000
## 2011-01-04     16.71     16.83    16.57      16.59    11092800
## 2013-12-31     40.17     40.50    40.00      40.44     8291400
##            YHOO.Adjusted
## 2010-12-31         16.63
## 2011-01-03         16.75
## 2011-01-04         16.59
## 2013-12-31         40.44
data.IBM[c(1:3,nrow(data.IBM)),]
##            IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted
## 2010-12-31   146.73   147.07  145.96    146.76    2969800     125.8031
## 2011-01-03   147.21   148.20  147.14    147.48    4603800     126.4203
## 2011-01-04   147.56   148.22  146.64    147.64    5060100     126.5574
## 2013-12-31   186.49   187.79  186.30    187.57    3619700     169.4835
port<-data.AMZN[,c(4,6)]
port<-merge(port,data.YHOO[,c(4,6)])
port<-merge(port,data.IBM[,c(4,6)])
port[c(1:3,nrow(port)),]
##            AMZN.Close AMZN.Adjusted YHOO.Close YHOO.Adjusted IBM.Close
## 2010-12-31     180.00        180.00      16.63         16.63    146.76
## 2011-01-03     184.22        184.22      16.75         16.75    147.48
## 2011-01-04     185.01        185.01      16.59         16.59    147.64
## 2013-12-31     398.79        398.79      40.44         40.44    187.57
##            IBM.Adjusted
## 2010-12-31     125.8031
## 2011-01-03     126.4203
## 2011-01-04     126.5574
## 2013-12-31     169.4835
port$AMZN.ret<-Delt(port$AMZN.Adjusted)
port$YHOO.ret<-Delt(port$YHOO.Adjusted)
port$IBM.ret<-Delt(port$IBM.Adjusted)
port[c(1:3,nrow(port)),]
##            AMZN.Close AMZN.Adjusted YHOO.Close YHOO.Adjusted IBM.Close
## 2010-12-31     180.00        180.00      16.63         16.63    146.76
## 2011-01-03     184.22        184.22      16.75         16.75    147.48
## 2011-01-04     185.01        185.01      16.59         16.59    147.64
## 2013-12-31     398.79        398.79      40.44         40.44    187.57
##            IBM.Adjusted    AMZN.ret     YHOO.ret     IBM.ret
## 2010-12-31     125.8031          NA           NA          NA
## 2011-01-03     126.4203 0.023444450  0.007215935 0.004905977
## 2011-01-04     126.5574 0.004288318 -0.009552239 0.001084913
## 2013-12-31     169.4835 0.013778412  0.005970099 0.006222858
port<-cbind(data.frame(index(port)),
      data.frame(port))
names(port)[1]<-paste("date")
port[c(1:3,nrow(port)),]
##                  date AMZN.Close AMZN.Adjusted YHOO.Close YHOO.Adjusted
## 2010-12-31 2010-12-31     180.00        180.00      16.63         16.63
## 2011-01-03 2011-01-03     184.22        184.22      16.75         16.75
## 2011-01-04 2011-01-04     185.01        185.01      16.59         16.59
## 2013-12-31 2013-12-31     398.79        398.79      40.44         40.44
##            IBM.Close IBM.Adjusted    AMZN.ret     YHOO.ret     IBM.ret
## 2010-12-31    146.76     125.8031          NA           NA          NA
## 2011-01-03    147.48     126.4203 0.023444450  0.007215935 0.004905977
## 2011-01-04    147.64     126.5574 0.004288318 -0.009552239 0.001084913
## 2013-12-31    187.57     169.4835 0.013778412  0.005970099 0.006222858
port<-subset(port,
      port$date>="2012-12-31" &
      port$date<="2013-12-31")
port[c(1:3,nrow(port)),]
##                  date AMZN.Close AMZN.Adjusted YHOO.Close YHOO.Adjusted
## 2012-12-31 2012-12-31     250.87        250.87      19.90         19.90
## 2013-01-02 2013-01-02     257.31        257.31      20.08         20.08
## 2013-01-03 2013-01-03     258.48        258.48      19.78         19.78
## 2013-12-31 2013-12-31     398.79        398.79      40.44         40.44
##            IBM.Close IBM.Adjusted    AMZN.ret     YHOO.ret      IBM.ret
## 2012-12-31    191.55     169.7850 0.023207448  0.020512821  0.009060744
## 2013-01-02    196.35     174.0396 0.025670679  0.009045226  0.025058746
## 2013-01-03    195.27     173.0823 0.004547095 -0.014940189 -0.005500391
## 2013-12-31    187.57     169.4835 0.013778412  0.005970099  0.006222858
ewport<-port[c(1,8:10)]
ewport[c(1:3,nrow(ewport)),]
##                  date    AMZN.ret     YHOO.ret      IBM.ret
## 2012-12-31 2012-12-31 0.023207448  0.020512821  0.009060744
## 2013-01-02 2013-01-02 0.025670679  0.009045226  0.025058746
## 2013-01-03 2013-01-03 0.004547095 -0.014940189 -0.005500391
## 2013-12-31 2013-12-31 0.013778412  0.005970099  0.006222858
names(ewport)<-paste(c("date","AMZN","YHOO","IBM"))
rownames(ewport)<-seq(1:nrow(ewport))
ewport[c(1:3,nrow(ewport)),]
##           date        AMZN         YHOO          IBM
## 1   2012-12-31 0.023207448  0.020512821  0.009060744
## 2   2013-01-02 0.025670679  0.009045226  0.025058746
## 3   2013-01-03 0.004547095 -0.014940189 -0.005500391
## 253 2013-12-31 0.013778412  0.005970099  0.006222858
ewport$AMZN<-1+ewport$AMZN
ewport$YHOO<-1+ewport$YHOO
ewport$IBM<-1+ewport$IBM
ewport[c(1:3,nrow(ewport)),]
##           date     AMZN      YHOO       IBM
## 1   2012-12-31 1.023207 1.0205128 1.0090607
## 2   2013-01-02 1.025671 1.0090452 1.0250587
## 3   2013-01-03 1.004547 0.9850598 0.9944996
## 253 2013-12-31 1.013778 1.0059701 1.0062229
ew.q1<-subset(ewport,
      ewport$date>=as.Date("2012-12-31")&
      ewport$date<=as.Date("2013-03-31"))
ew.q1[c(1:3,nrow(ew.q1)),]
##          date     AMZN      YHOO       IBM
## 1  2012-12-31 1.023207 1.0205128 1.0090607
## 2  2013-01-02 1.025671 1.0090452 1.0250587
## 3  2013-01-03 1.004547 0.9850598 0.9944996
## 61 2013-03-28 1.004485 0.9974566 1.0114278
ew.q1[1,2:4]<-1
ew.q1$AMZN<-cumprod(ew.q1$AMZN)
ew.q1$YHOO<-cumprod(ew.q1$YHOO)
ew.q1$IBM<-cumprod(ew.q1$IBM)
ew.q1[c(1:3,nrow(ew.q1)),]
##          date     AMZN      YHOO      IBM
## 1  2012-12-31 1.000000 1.0000000 1.000000
## 2  2013-01-02 1.025671 1.0090452 1.025059
## 3  2013-01-03 1.030335 0.9939699 1.019421
## 61 2013-03-28 1.062263 1.1824121 1.118235
num.sec<-3

ew.q1$AMZN.idx<-(1/num.sec)*ew.q1$AMZN
ew.q1$YHOO.idx<-(1/num.sec)*ew.q1$YHOO
ew.q1$IBM.idx<-(1/num.sec)*ew.q1$IBM
ew.q1[c(1:3,nrow(ew.q1)),]
##          date     AMZN      YHOO      IBM  AMZN.idx  YHOO.idx   IBM.idx
## 1  2012-12-31 1.000000 1.0000000 1.000000 0.3333333 0.3333333 0.3333333
## 2  2013-01-02 1.025671 1.0090452 1.025059 0.3418902 0.3363484 0.3416862
## 3  2013-01-03 1.030335 0.9939699 1.019421 0.3434448 0.3313233 0.3398068
## 61 2013-03-28 1.062263 1.1824121 1.118235 0.3540878 0.3941374 0.3727449
q1.val<-data.frame(rowSums(ew.q1[,5:7]))
q1.val[c(1:3,nrow(q1.val)),]
## [1] 1.000000 1.019925 1.014575 1.120970
names(q1.val)<-paste("port.val")
q1.val$date<-ew.q1$date
q1.val[c(1:3,nrow(q1.val)),]
##    port.val       date
## 1  1.000000 2012-12-31
## 2  1.019925 2013-01-02
## 3  1.014575 2013-01-03
## 61 1.120970 2013-03-28
q2.inv<-q1.val[nrow(q1.val),1]
q2.inv
## [1] 1.12097
ew.q2<-subset(ewport,
    ewport$date>=as.Date("2013-04-01")&
    ewport$date<=as.Date("2013-06-30"))
ew.q2[c(1:3,nrow(ew.q2)),]
##           date      AMZN      YHOO       IBM
## 62  2013-04-01 0.9816878 0.9987250 0.9956868
## 63  2013-04-02 1.0065365 1.0119149 1.0093229
## 64  2013-04-03 0.9837080 0.9831791 0.9920694
## 125 2013-06-28 1.0005045 0.9866510 0.9767953
ew.q2$AMZN<-cumprod(ew.q2$AMZN)
ew.q2$YHOO<-cumprod(ew.q2$YHOO)
ew.q2$IBM<-cumprod(ew.q2$IBM)
ew.q2[c(1:3,nrow(ew.q2)),]
##           date      AMZN      YHOO       IBM
## 62  2013-04-01 0.9816878 0.9987250 0.9956868
## 63  2013-04-02 0.9881047 1.0106247 1.0049695
## 64  2013-04-03 0.9720065 0.9936251 0.9969995
## 125 2013-06-28 1.0420279 1.0679982 0.9001677
ew.q2$AMZN.idx<-(q2.inv/num.sec)*ew.q2$AMZN
ew.q2$YHOO.idx<-(q2.inv/num.sec)*ew.q2$YHOO    
ew.q2$IBM.idx<-(q2.inv/num.sec)*ew.q2$IBM
ew.q2[c(1:3,nrow(ew.q2)),]
##           date      AMZN      YHOO       IBM  AMZN.idx  YHOO.idx   IBM.idx
## 62  2013-04-01 0.9816878 0.9987250 0.9956868 0.3668142 0.3731802 0.3720450
## 63  2013-04-02 0.9881047 1.0106247 1.0049695 0.3692119 0.3776267 0.3755136
## 64  2013-04-03 0.9720065 0.9936251 0.9969995 0.3631967 0.3712746 0.3725355
## 125 2013-06-28 1.0420279 1.0679982 0.9001677 0.3893607 0.3990646 0.3363537
q2.val<-data.frame(rowSums(ew.q2[,5:7]))
q2.val[c(1:3,nrow(q2.val)),]
## [1] 1.112039 1.122352 1.107007 1.124779
names(q2.val)<-paste("port.val")
q2.val$date<-ew.q2$date
q2.val[c(1:3,nrow(q2.val)),]
##     port.val       date
## 62  1.112039 2013-04-01
## 63  1.122352 2013-04-02
## 64  1.107007 2013-04-03
## 125 1.124779 2013-06-28
#
q3.inv<-q2.val[nrow(q2.val),1]
q3.inv
## [1] 1.124779
ew.q3<-subset(ewport,
    ewport$date>=as.Date("2013-07-01")&
    ewport$date<=as.Date("2013-09-30"))
ew.q3[c(1:3,nrow(ew.q3)),]
##           date      AMZN      YHOO       IBM
## 126 2013-07-01 1.0158810 1.0043773 1.0008895
## 127 2013-07-02 1.0057781 0.9900951 1.0011502
## 128 2013-07-03 1.0010573 1.0240096 1.0091384
## 189 2013-09-30 0.9893358 0.9886736 0.9906912
ew.q3$AMZN<-cumprod(ew.q3$AMZN)
ew.q3$YHOO<-cumprod(ew.q3$YHOO)
ew.q3$IBM<-cumprod(ew.q3$IBM)
ew.q3[c(1:3,nrow(ew.q3)),]
##           date     AMZN     YHOO       IBM
## 126 2013-07-01 1.015881 1.004377 1.0008895
## 127 2013-07-02 1.021751 0.994429 1.0020407
## 128 2013-07-03 1.022831 1.018305 1.0111977
## 189 2013-09-30 1.125860 1.319936 0.9738145
ew.q3$AMZN.idx<-(q3.inv/num.sec)*ew.q3$AMZN
ew.q3$YHOO.idx<-(q3.inv/num.sec)*ew.q3$YHOO    
ew.q3$IBM.idx<-(q3.inv/num.sec)*ew.q3$IBM
ew.q3[c(1:3,nrow(ew.q3)),]
##           date     AMZN     YHOO       IBM  AMZN.idx  YHOO.idx   IBM.idx
## 126 2013-07-01 1.015881 1.004377 1.0008895 0.3808805 0.3765675 0.3752598
## 127 2013-07-02 1.021751 0.994429 1.0020407 0.3830813 0.3728376 0.3756914
## 128 2013-07-03 1.022831 1.018305 1.0111977 0.3834863 0.3817893 0.3791246
## 189 2013-09-30 1.125860 1.319936 0.9738145 0.4221145 0.4948789 0.3651087
q3.val<-data.frame(rowSums(ew.q3[,5:7]))
q3.val[c(1:3,nrow(q3.val)),]
## [1] 1.132708 1.131610 1.144400 1.282102
names(q3.val)<-paste("port.val")
q3.val$date<-ew.q3$date
q3.val[c(1:3,nrow(q3.val)),]
##     port.val       date
## 126 1.132708 2013-07-01
## 127 1.131610 2013-07-02
## 128 1.144400 2013-07-03
## 189 1.282102 2013-09-30
#
q4.inv<-q3.val[nrow(q3.val),1]
q4.inv
## [1] 1.282102
ew.q4<-subset(ewport,
    ewport$date>=as.Date("2013-10-01")&
    ewport$date<=as.Date("2013-12-31"))
ew.q4[c(1:3,nrow(ew.q4)),]
##           date      AMZN      YHOO       IBM
## 190 2013-10-01 1.0265801 1.0343685 1.0064803
## 191 2013-10-02 0.9986291 0.9950451 0.9923812
## 192 2013-10-03 0.9820598 0.9923844 0.9940527
## 253 2013-12-31 1.0137784 1.0059701 1.0062229
ew.q4$AMZN<-cumprod(ew.q4$AMZN)
ew.q4$YHOO<-cumprod(ew.q4$YHOO)
ew.q4$IBM<-cumprod(ew.q4$IBM)
ew.q4[c(1:3,nrow(ew.q4)),]
##           date     AMZN     YHOO       IBM
## 190 2013-10-01 1.026580 1.034368 1.0064803
## 191 2013-10-02 1.025173 1.029243 0.9988120
## 192 2013-10-03 1.006781 1.021405 0.9928718
## 253 2013-12-31 1.275557 1.219174 1.0183461
ew.q4$AMZN.idx<-(q4.inv/num.sec)*ew.q4$AMZN
ew.q4$YHOO.idx<-(q4.inv/num.sec)*ew.q4$YHOO    
ew.q4$IBM.idx<-(q4.inv/num.sec)*ew.q4$IBM
ew.q4[c(1:3,nrow(ew.q4)),]
##           date     AMZN     YHOO       IBM  AMZN.idx  YHOO.idx   IBM.idx
## 190 2013-10-01 1.026580 1.034368 1.0064803 0.4387268 0.4420553 0.4301368
## 191 2013-10-02 1.025173 1.029243 0.9988120 0.4381253 0.4398650 0.4268597
## 192 2013-10-03 1.006781 1.021405 0.9928718 0.4302653 0.4365151 0.4243210
## 253 2013-12-31 1.275557 1.219174 1.0183461 0.5451312 0.5210352 0.4352078
q4.val<-data.frame(rowSums(ew.q4[,5:7]))
q4.val[c(1:3,nrow(q4.val)),]
## [1] 1.310919 1.304850 1.291101 1.501374
names(q4.val)<-paste("port.val")
q4.val$date<-ew.q4$date
q4.val[c(1:3,nrow(q4.val)),]
##     port.val       date
## 190 1.310919 2013-10-01
## 191 1.304850 2013-10-02
## 192 1.291101 2013-10-03
## 253 1.501374 2013-12-31
ew.portval<-rbind(q1.val,q2.val,q3.val,q4.val)
ew.portval[c(1:3,nrow(ew.portval)),]
##     port.val       date
## 1   1.000000 2012-12-31
## 2   1.019925 2013-01-02
## 3   1.014575 2013-01-03
## 253 1.501374 2013-12-31