install.packages("tidyverse")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("rvest")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("tidyquant")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("janitor")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
## also installing the dependency 'snakecase'
install.packages("timetk")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("quantmod")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("tidyverse")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("rvest")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("tidyquant")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages("janitor")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
asset.names <- c("MSFT", "NORD", "SBUX")
mu.vec = c(0.0427, 0.0015, 0.0285)
mu.vec
## [1] 0.0427 0.0015 0.0285
names(mu.vec) = asset.names
sigma.mat = matrix(c(0.0100, 0.0018, 0.0011,
                     0.0018, 0.0109, 0.0026,
                     0.0011, 0.0026, 0.0199),
                   nrow=3, ncol=3)
dimnames(sigma.mat) = list(asset.names, asset.names)
mu.vec
##   MSFT   NORD   SBUX 
## 0.0427 0.0015 0.0285
sigma.mat
##        MSFT   NORD   SBUX
## MSFT 0.0100 0.0018 0.0011
## NORD 0.0018 0.0109 0.0026
## SBUX 0.0011 0.0026 0.0199
x.vec = rep(1, 3)/3
names(x.vec ) = asset.names
mu.p.x = crossprod( x.vec, mu.vec )
sig2.p.x = t(x.vec ) %*% 
  sigma.mat %*%
  x.vec
sig.p.x = sqrt(sig2.p.x)
mu.p.x
##            [,1]
## [1,] 0.02423333
sig.p.x
##            [,1]
## [1,] 0.07586538
top.mat = cbind (2* sigma.mat, rep (1,3))
bot.vec = c( rep (1,3),0)
Am.mat = rbind (top.mat, bot.vec)
b.vec = c(rep(0,3), 1)
z.m.mat = solve(Am.mat)%*%
  b.vec
m.vec = z.m.mat [1:3,1]
m.vec
##      MSFT      NORD      SBUX 
## 0.4411093 0.3656263 0.1932644
mu.gmin = as.numeric(crossprod (m.vec, mu.vec))
mu.gmin
## [1] 0.02489184
sig2.gmin = as.numeric(t(m.vec)%*% sigma.mat %*%
                         m.vec)
sig.gmin = sqrt(sig2.gmin)
sig.gmin
## [1] 0.07267607
one.vec = rep(1, 3)
sigma.inv.mat = solve(sigma.mat)
top.mat = sigma.inv.mat %*% 
  one.vec
bot.val = as.numeric((t(one.vec) %*%
                        sigma.inv.mat %*% 
                        one.vec))
m.mat = top.mat/bot.val
m.mat [ ,1]
##      MSFT      NORD      SBUX 
## 0.4411093 0.3656263 0.1932644