This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.
library(fPortfolio)
## Loading required package: timeDate
## Loading required package: timeSeries
## Loading required package: fBasics
## Loading required package: fAssets
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following object is masked from 'package:timeSeries':
##
## time<-
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: TTR
##
## Attaching package: 'TTR'
## The following object is masked from 'package:fBasics':
##
## volatility
## Version 0.4-0 included new data defaults. See ?getSymbols.
# 1. Download ETF daily data from yahoo with ticker names of SPY, QQQ, EEM, IWM, EFA, TLT, IYR, GLD from 2010 to current date.
tickers = c("SPY", "QQQ", "EEM", "IWM", "EFA", "TLT", "IYR", "GLD")
data <- new.env()
getSymbols(tickers, src = "yahoo", from = "2010-01-01", env = data, auto.assign = 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.
##
## WARNING: There have been significant changes to Yahoo Finance data.
## Please see the Warning section of '?getSymbols.yahoo' for details.
##
## This message is shown once per session and may be disabled by setting
## options("getSymbols.yahoo.warning"=FALSE).
## pausing 1 second between requests for more than 5 symbols
## pausing 1 second between requests for more than 5 symbols
## pausing 1 second between requests for more than 5 symbols
## pausing 1 second between requests for more than 5 symbols
## [1] "SPY" "QQQ" "EEM" "IWM" "EFA" "TLT" "IYR" "GLD"
names(data)
## [1] "GLD" "IWM" "IYR" "TLT" "QQQ"
## [6] ".getSymbols" "EEM" "SPY" "EFA"
head(data$SPY)
## SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted
## 2010-01-04 112.37 113.39 111.51 113.33 118944600 94.13087
## 2010-01-05 113.26 113.68 112.85 113.63 111579900 94.38007
## 2010-01-06 113.52 113.99 113.43 113.71 116074400 94.44649
## 2010-01-07 113.50 114.33 113.18 114.19 131091100 94.84521
## 2010-01-08 113.89 114.62 113.66 114.57 126402800 95.16080
## 2010-01-11 115.08 115.13 114.24 114.73 106375700 95.29370
multi<-data$SPY[,6]
multi<-merge(multi, data$QQQ[,6])
multi<-merge(multi, data$EEM[,6])
multi<-merge(multi, data$IWM[,6])
multi<-merge(multi, data$EFA[,6])
multi<-merge(multi, data$TLT[,6])
multi<-merge(multi, data$IYR[,6])
multi<-merge(multi, data$GLD[,6])
head(multi)
## 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
multi<-multi[,-1]
head(multi)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-04 42.07555 35.67281 56.09659 43.40944
## 2010-01-05 42.07555 35.93174 55.90370 43.44770
## 2010-01-06 41.82175 36.00691 55.85109 43.63134
## 2010-01-07 41.84896 35.79811 56.26318 43.46300
## 2010-01-08 42.19340 36.08208 56.57005 43.80734
## 2010-01-11 42.02117 36.00691 56.34210 44.16698
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-04 68.49980 32.26275 109.80
## 2010-01-05 68.94214 32.34021 109.70
## 2010-01-06 68.01926 32.32613 111.51
## 2010-01-07 68.13365 32.61488 110.82
## 2010-01-08 68.10319 32.39655 111.37
## 2010-01-11 67.72945 32.55150 112.85
tail(multi)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2019-04-10 185.47 44.52 157.31 66.12
## 2019-04-11 185.03 44.04 157.11 65.98
## 2019-04-12 185.83 44.36 157.68 66.44
## 2019-04-15 185.86 44.13 157.17 66.47
## 2019-04-16 186.50 44.46 157.54 66.52
## 2019-04-17 187.15 44.59 156.10 66.71
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2019-04-10 124.28 87.80 123.53
## 2019-04-11 123.55 87.71 121.95
## 2019-04-12 122.67 88.17 121.83
## 2019-04-15 122.98 87.72 121.60
## 2019-04-16 122.21 85.84 120.51
## 2019-04-17 122.26 85.06 120.28
#2. Use year 2010 data to calculate daily returns and their covariance matrix, and compute weights of minimum variance portfolio (MVP).
multi.ret<-multi/lag(multi)-1
head(multi.ret)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-04 NA NA NA NA
## 2010-01-05 0.000000000 0.007258357 -0.0034386046 0.0008812368
## 2010-01-06 -0.006032006 0.002092078 -0.0009411184 0.0042268523
## 2010-01-07 0.000650451 -0.005798915 0.0073783704 -0.0038583043
## 2010-01-08 0.008230575 0.007932542 0.0054542424 0.0079225546
## 2010-01-11 -0.004081823 -0.002083278 -0.0040294644 0.0082096290
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-04 NA NA NA
## 2010-01-05 0.0064574931 0.0024008181 -0.0009108014
## 2010-01-06 -0.0133863268 -0.0004352476 0.0164995902
## 2010-01-07 0.0016818031 0.0089323703 -0.0061878037
## 2010-01-08 -0.0004471212 -0.0066941831 0.0049630301
## 2010-01-11 -0.0054877607 0.0047827619 0.0132889913
multi.ret<-multi.ret[-1,]
head(multi.ret)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-05 0.000000000 0.007258357 -0.0034386046 0.0008812368
## 2010-01-06 -0.006032006 0.002092078 -0.0009411184 0.0042268523
## 2010-01-07 0.000650451 -0.005798915 0.0073783704 -0.0038583043
## 2010-01-08 0.008230575 0.007932542 0.0054542424 0.0079225546
## 2010-01-11 -0.004081823 -0.002083278 -0.0040294644 0.0082096290
## 2010-01-12 -0.012511003 -0.016005818 -0.0108934168 -0.0117811086
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-05 0.0064574931 0.0024008181 -0.0009108014
## 2010-01-06 -0.0133863268 -0.0004352476 0.0164995902
## 2010-01-07 0.0016818031 0.0089323703 -0.0061878037
## 2010-01-08 -0.0004471212 -0.0066941831 0.0049630301
## 2010-01-11 -0.0054877607 0.0047827619 0.0132889913
## 2010-01-12 0.0171167628 -0.0168758747 -0.0209127164
class(multi.ret)
## [1] "xts" "zoo"
lppAssets <- as.timeSeries(multi.ret)
class(lppAssets)
## [1] "timeSeries"
## attr(,"package")
## [1] "timeSeries"
lppData <- portfolioData(data = lppAssets, spec = portfolioSpec())
print(lppData)
##
## Head/Tail Series Data:
##
## GMT
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-05 0.000000000 0.007258357 -0.0034386046 0.0008812368
## 2010-01-06 -0.006032006 0.002092078 -0.0009411184 0.0042268523
## 2010-01-07 0.000650451 -0.005798915 0.0073783704 -0.0038583043
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-05 0.006457493 0.0024008181 -0.0009108014
## 2010-01-06 -0.013386327 -0.0004352476 0.0164995902
## 2010-01-07 0.001681803 0.0089323703 -0.0061878037
## GMT
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2019-04-15 0.0001614325 -0.005184851 -0.003234367 0.0004515202
## 2019-04-16 0.0034434467 0.007477861 0.002354107 0.0007521589
## 2019-04-17 0.0034852225 0.002923999 -0.009140454 0.0028563140
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2019-04-15 0.0025271460 -0.005103743 -0.001887909
## 2019-04-16 -0.0062612131 -0.021431885 -0.008963783
## 2019-04-17 0.0004091564 -0.009086650 -0.001908580
##
## Statistics:
##
## $mean
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 6.986036e-04 1.871143e-04 5.132239e-04 2.494141e-04 2.857340e-04
## IYR.Adjusted GLD.Adjusted
## 4.752958e-04 8.805332e-05
##
## $Cov
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 1.194103e-04 1.120204e-04 1.125805e-04 9.783943e-05
## EEM.Adjusted 1.120204e-04 1.830069e-04 1.252606e-04 1.334673e-04
## IWM.Adjusted 1.125805e-04 1.252606e-04 1.501961e-04 1.126059e-04
## EFA.Adjusted 9.783943e-05 1.334673e-04 1.126059e-04 1.306461e-04
## TLT.Adjusted -3.882484e-05 -4.520776e-05 -4.921096e-05 -4.649214e-05
## IYR.Adjusted 7.709859e-05 9.694076e-05 9.850002e-05 8.573104e-05
## GLD.Adjusted -1.548174e-06 1.856168e-05 1.581751e-06 9.050407e-06
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.882484e-05 7.709859e-05 -1.548174e-06
## EEM.Adjusted -4.520776e-05 9.694076e-05 1.856168e-05
## IWM.Adjusted -4.921096e-05 9.850002e-05 1.581751e-06
## EFA.Adjusted -4.649214e-05 8.573104e-05 9.050407e-06
## TLT.Adjusted 7.563093e-05 -2.135395e-05 1.627228e-05
## IYR.Adjusted -2.135395e-05 1.207100e-04 8.027814e-06
## GLD.Adjusted 1.627228e-05 8.027814e-06 9.778999e-05
##
## $estimator
## [1] "covEstimator"
##
## $mu
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 6.986036e-04 1.871143e-04 5.132239e-04 2.494141e-04 2.857340e-04
## IYR.Adjusted GLD.Adjusted
## 4.752958e-04 8.805332e-05
##
## $Sigma
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 1.194103e-04 1.120204e-04 1.125805e-04 9.783943e-05
## EEM.Adjusted 1.120204e-04 1.830069e-04 1.252606e-04 1.334673e-04
## IWM.Adjusted 1.125805e-04 1.252606e-04 1.501961e-04 1.126059e-04
## EFA.Adjusted 9.783943e-05 1.334673e-04 1.126059e-04 1.306461e-04
## TLT.Adjusted -3.882484e-05 -4.520776e-05 -4.921096e-05 -4.649214e-05
## IYR.Adjusted 7.709859e-05 9.694076e-05 9.850002e-05 8.573104e-05
## GLD.Adjusted -1.548174e-06 1.856168e-05 1.581751e-06 9.050407e-06
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.882484e-05 7.709859e-05 -1.548174e-06
## EEM.Adjusted -4.520776e-05 9.694076e-05 1.856168e-05
## IWM.Adjusted -4.921096e-05 9.850002e-05 1.581751e-06
## EFA.Adjusted -4.649214e-05 8.573104e-05 9.050407e-06
## TLT.Adjusted 7.563093e-05 -2.135395e-05 1.627228e-05
## IYR.Adjusted -2.135395e-05 1.207100e-04 8.027814e-06
## GLD.Adjusted 1.627228e-05 8.027814e-06 9.778999e-05
Data <- portfolioData(lppData)
getStatistics(Data)
## $mean
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 6.986036e-04 1.871143e-04 5.132239e-04 2.494141e-04 2.857340e-04
## IYR.Adjusted GLD.Adjusted
## 4.752958e-04 8.805332e-05
##
## $Cov
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 1.194103e-04 1.120204e-04 1.125805e-04 9.783943e-05
## EEM.Adjusted 1.120204e-04 1.830069e-04 1.252606e-04 1.334673e-04
## IWM.Adjusted 1.125805e-04 1.252606e-04 1.501961e-04 1.126059e-04
## EFA.Adjusted 9.783943e-05 1.334673e-04 1.126059e-04 1.306461e-04
## TLT.Adjusted -3.882484e-05 -4.520776e-05 -4.921096e-05 -4.649214e-05
## IYR.Adjusted 7.709859e-05 9.694076e-05 9.850002e-05 8.573104e-05
## GLD.Adjusted -1.548174e-06 1.856168e-05 1.581751e-06 9.050407e-06
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.882484e-05 7.709859e-05 -1.548174e-06
## EEM.Adjusted -4.520776e-05 9.694076e-05 1.856168e-05
## IWM.Adjusted -4.921096e-05 9.850002e-05 1.581751e-06
## EFA.Adjusted -4.649214e-05 8.573104e-05 9.050407e-06
## TLT.Adjusted 7.563093e-05 -2.135395e-05 1.627228e-05
## IYR.Adjusted -2.135395e-05 1.207100e-04 8.027814e-06
## GLD.Adjusted 1.627228e-05 8.027814e-06 9.778999e-05
##
## $estimator
## [1] "covEstimator"
##
## $mu
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 6.986036e-04 1.871143e-04 5.132239e-04 2.494141e-04 2.857340e-04
## IYR.Adjusted GLD.Adjusted
## 4.752958e-04 8.805332e-05
##
## $Sigma
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 1.194103e-04 1.120204e-04 1.125805e-04 9.783943e-05
## EEM.Adjusted 1.120204e-04 1.830069e-04 1.252606e-04 1.334673e-04
## IWM.Adjusted 1.125805e-04 1.252606e-04 1.501961e-04 1.126059e-04
## EFA.Adjusted 9.783943e-05 1.334673e-04 1.126059e-04 1.306461e-04
## TLT.Adjusted -3.882484e-05 -4.520776e-05 -4.921096e-05 -4.649214e-05
## IYR.Adjusted 7.709859e-05 9.694076e-05 9.850002e-05 8.573104e-05
## GLD.Adjusted -1.548174e-06 1.856168e-05 1.581751e-06 9.050407e-06
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.882484e-05 7.709859e-05 -1.548174e-06
## EEM.Adjusted -4.520776e-05 9.694076e-05 1.856168e-05
## IWM.Adjusted -4.921096e-05 9.850002e-05 1.581751e-06
## EFA.Adjusted -4.649214e-05 8.573104e-05 9.050407e-06
## TLT.Adjusted 7.563093e-05 -2.135395e-05 1.627228e-05
## IYR.Adjusted -2.135395e-05 1.207100e-04 8.027814e-06
## GLD.Adjusted 1.627228e-05 8.027814e-06 9.778999e-05
tgPortfolio <- tangencyPortfolio(lppAssets)
str(tgPortfolio)
## Formal class 'fPORTFOLIO' [package "fPortfolio"] with 7 slots
## ..@ call : language maxratioPortfolio(data = data, spec = spec, constraints = constraints)
## ..@ data :Formal class 'fPFOLIODATA' [package "fPortfolio"] with 3 slots
## .. .. ..@ data :List of 3
## .. .. .. ..$ series :Time Series:
## Name: object
## Data Matrix:
## Dimension: 2337 7
## Column Names: QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## Row Names: 2010-01-05 ... 2019-04-17
## Positions:
## Start: 2010-01-05
## End: 2019-04-17
## With:
## Format: %Y-%m-%d
## FinCenter: GMT
## Units: QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## Title: Time Series Object
## Documentation: Thu Apr 18 11:55:44 2019
## .. .. .. ..$ nAssets: int 7
## .. .. .. ..$ names : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ statistics:List of 5
## .. .. .. ..$ mean : Named num [1:7] 0.000699 0.000187 0.000513 0.000249 0.000286 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ Cov : num [1:7, 1:7] 1.19e-04 1.12e-04 1.13e-04 9.78e-05 -3.88e-05 ...
## .. .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ estimator: chr "covEstimator"
## .. .. .. ..$ mu : Named num [1:7] 0.000699 0.000187 0.000513 0.000249 0.000286 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ Sigma : num [1:7, 1:7] 1.19e-04 1.12e-04 1.13e-04 9.78e-05 -3.88e-05 ...
## .. .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ tailRisk : list()
## ..@ spec :Formal class 'fPFOLIOSPEC' [package "fPortfolio"] with 5 slots
## .. .. ..@ model :List of 5
## .. .. .. ..$ type : chr "MV"
## .. .. .. ..$ optimize : chr "minRisk"
## .. .. .. ..$ estimator: chr "covEstimator"
## .. .. .. ..$ tailRisk : list()
## .. .. .. ..$ params :List of 1
## .. .. .. .. ..$ alpha: num 0.05
## .. .. ..@ portfolio:List of 6
## .. .. .. ..$ weights : num [1:7] 0.511 0 0 0 0.489 ...
## .. .. .. .. ..- attr(*, "invest")= num 1
## .. .. .. ..$ targetReturn : logi NA
## .. .. .. ..$ targetRisk : logi NA
## .. .. .. ..$ riskFreeRate : num 0
## .. .. .. ..$ nFrontierPoints: num 50
## .. .. .. ..$ status : num 0
## .. .. ..@ optim :List of 5
## .. .. .. ..$ solver : chr "solveRquadprog"
## .. .. .. ..$ objective: chr [1:3] "portfolioObjective" "portfolioReturn" "portfolioRisk"
## .. .. .. ..$ options :List of 1
## .. .. .. .. ..$ meq: num 2
## .. .. .. ..$ control : list()
## .. .. .. ..$ trace : logi FALSE
## .. .. ..@ messages :List of 2
## .. .. .. ..$ messages: logi FALSE
## .. .. .. ..$ note : chr ""
## .. .. ..@ ampl :List of 5
## .. .. .. ..$ ampl : logi FALSE
## .. .. .. ..$ project : chr "ampl"
## .. .. .. ..$ solver : chr "ipopt"
## .. .. .. ..$ protocol: logi FALSE
## .. .. .. ..$ trace : logi FALSE
## ..@ constraints:Formal class 'fPFOLIOCON' [package "fPortfolio"] with 16 slots
## .. .. ..@ stringConstraints : chr "LongOnly"
## .. .. ..@ minWConstraints : Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxWConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ eqsumWConstraints : num [1, 1:8] -1 -1 -1 -1 -1 -1 -1 -1
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : chr "Budget"
## .. .. .. .. ..$ : chr [1:8] "ceq" "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" ...
## .. .. .. ..- attr(*, "na.action")= 'omit' Named num 1
## .. .. .. .. ..- attr(*, "names")= chr "Return"
## .. .. ..@ minsumWConstraints : logi [1, 1] NA
## .. .. ..@ maxsumWConstraints : logi [1, 1] NA
## .. .. ..@ minBConstraints : Named num [1:7] -Inf -Inf -Inf -Inf -Inf ...
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxBConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ listFConstraints : list()
## .. .. ..@ minFConstraints : num(0)
## .. .. ..@ maxFConstraints : num(0)
## .. .. ..@ minBuyinConstraints: Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxBuyinConstraints: Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ nCardConstraints : int 7
## .. .. ..@ minCardConstraints : Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxCardConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## ..@ portfolio :Formal class 'fPFOLIOVAL' [package "fPortfolio"] with 2 slots
## .. .. ..@ portfolio:List of 6
## .. .. .. ..$ weights : Named num [1:7] 0.511 0 0 0 0.489 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ covRiskBudgets: Named num [1:7] 0.718 0 0 0 0.282 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ targetReturn : Named num [1:2] 0.000497 0.000497
## .. .. .. .. ..- attr(*, "names")= chr [1:2] "mean" "mu"
## .. .. .. ..$ targetRisk : Named num [1:4] 0.00546 0.00546 0.01258 0.00892
## .. .. .. .. ..- attr(*, "names")= chr [1:4] "Cov" "Sigma" "CVaR" "VaR"
## .. .. .. ..$ targetAlpha : num 0.05
## .. .. .. ..$ status : num 0
## .. .. ..@ messages : list()
## ..@ title : chr "Tangency Portfolio"
## ..@ description: chr "Thu Apr 18 11:55:44 2019 by user: Setsnee"
print(tgPortfolio)
##
## Title:
## MV Tangency Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: LongOnly
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.5107 0.0000 0.0000 0.0000 0.4893
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0000
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.7185 0.0000 0.0000 0.0000 0.2815
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0000
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0005 0.0055 0.0126 0.0089
##
## Description:
## Thu Apr 18 11:55:44 2019 by user: Setsnee
mvPortfolio <- minvariancePortfolio(lppAssets)
print(mvPortfolio)
##
## Title:
## MV Minimum Variance Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: LongOnly
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1346 0.0000 0.0855 0.1600 0.4882
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1317
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1346 0.0000 0.0855 0.1600 0.4882
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1317
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0003 0.0047 0.0106 0.0077
##
## Description:
## Thu Apr 18 11:55:44 2019 by user: Setsnee
globminSpec <- portfolioSpec()
shortConstraints <- c("minW[1:3]=-999", "maxW[1:3]=+999")
mvPortfolio.short <- minvariancePortfolio(lppAssets, spec = globminSpec, constraints = shortConstraints )
print(mvPortfolio.short)
##
## Title:
## MV Minimum Variance Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: minW maxW
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1591 -0.1235 0.0938 0.2510 0.4775
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1420
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1591 -0.1235 0.0938 0.2510 0.4775
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1420
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0003 0.0046 0.0103 0.0075
##
## Description:
## Thu Apr 18 11:55:44 2019 by user: Setsnee
weightsPie(mvPortfolio.short, radius = 0.7)
text <- "Global Minimum Risk Portfolio"
mtext(text, side = 3, line = 1.5, font = 2, cex = 0.7, adj = 0)
weightedReturnsPie(mvPortfolio.short, radius = 0.8, legend = FALSE)
covRiskBudgetsPie(mvPortfolio.short, radius = 0.9, legend = FALSE)
Spec<-portfolioSpec()
setTargetReturn(Spec)<- 0.007
efficientPortfolio.short <- efficientPortfolio(lppAssets, spec = Spec, constraints = shortConstraints )
print(efficientPortfolio.short)
##
## Title:
## MV Efficient Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: minW maxW
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 14.8600 -11.4566 -2.5105 0.0000 0.0000
## IYR.Adjusted GLD.Adjusted
## 0.1071 0.0000
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.2693 0.7054 0.0270 0.0000 0.0000
## IYR.Adjusted GLD.Adjusted
## -0.0018 0.0000
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0070 0.1093 0.2358 0.1725
##
## Description:
## Thu Apr 18 11:55:44 2019 by user: Setsnee
#3. now use year 2010 data to calculate weekly returns and their covariance matrix, and compute weights of minimum variance portfolio (MVP).
weekly.end <- endpoints(multi, on = "weeks")
weekly <- period.apply(multi, INDEX = weekly.end, FUN = mean)
head(weekly)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-08 42.00304 35.89833 56.13692 43.55176
## 2010-01-15 41.82720 35.49240 56.20181 43.96650
## 2010-01-22 41.27792 34.38865 55.53325 42.57537
## 2010-01-29 39.82766 32.56074 53.61003 41.11233
## 2010-02-05 39.22943 32.26674 52.90510 40.49099
## 2010-02-12 39.19861 31.76559 52.50178 39.51154
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-08 68.33961 32.38811 110.640
## 2010-01-15 68.64318 32.36698 111.554
## 2010-01-22 69.92607 31.93702 108.750
## 2010-01-29 69.95198 30.86828 106.802
## 2010-02-05 69.90826 30.97956 107.046
## 2010-02-12 69.43832 30.08654 105.748
weekly.ret<-weekly/lag(weekly)-1
head(weekly.ret)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-08 NA NA NA NA
## 2010-01-15 -0.0041865443 -0.011307630 0.001155831 0.009522783
## 2010-01-22 -0.0131321032 -0.031098334 -0.011895548 -0.031640547
## 2010-01-29 -0.0351340296 -0.053154483 -0.034631854 -0.034363727
## 2010-02-05 -0.0150203462 -0.009029255 -0.013149344 -0.015113122
## 2010-02-12 -0.0007856091 -0.015531356 -0.007623417 -0.024189381
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-08 NA NA NA
## 2010-01-15 0.0044421268 -0.0006523444 0.008261012
## 2010-01-22 0.0186892337 -0.0132838056 -0.025135803
## 2010-01-29 0.0003705764 -0.0334639203 -0.017912640
## 2010-02-05 -0.0006250173 0.0036048198 0.002284588
## 2010-02-12 -0.0067222814 -0.0288260984 -0.012125608
weekly.ret<-weekly.ret[-1,]
head(weekly.ret)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-15 -0.0041865443 -0.011307630 0.001155831 0.009522783
## 2010-01-22 -0.0131321032 -0.031098334 -0.011895548 -0.031640547
## 2010-01-29 -0.0351340296 -0.053154483 -0.034631854 -0.034363727
## 2010-02-05 -0.0150203462 -0.009029255 -0.013149344 -0.015113122
## 2010-02-12 -0.0007856091 -0.015531356 -0.007623417 -0.024189381
## 2010-02-19 0.0322919780 0.039256563 0.046092222 0.026803124
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-15 0.0044421268 -0.0006523444 0.008261012
## 2010-01-22 0.0186892337 -0.0132838056 -0.025135803
## 2010-01-29 0.0003705764 -0.0334639203 -0.017912640
## 2010-02-05 -0.0006250173 0.0036048198 0.002284588
## 2010-02-12 -0.0067222814 -0.0288260984 -0.012125608
## 2010-02-19 -0.0131450333 0.0536634065 0.036237097
class(weekly.ret)
## [1] "xts" "zoo"
lppAssets1 <- as.timeSeries(weekly.ret)
class(lppAssets1)
## [1] "timeSeries"
## attr(,"package")
## [1] "timeSeries"
lppData1 <- portfolioData(data = lppAssets1, spec = portfolioSpec())
print(lppData1)
##
## Head/Tail Series Data:
##
## GMT
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-15 -0.004186544 -0.01130763 0.001155831 0.009522783
## 2010-01-22 -0.013132103 -0.03109833 -0.011895548 -0.031640547
## 2010-01-29 -0.035134030 -0.05315448 -0.034631854 -0.034363727
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-15 0.0044421268 -0.0006523444 0.008261012
## 2010-01-22 0.0186892337 -0.0132838056 -0.025135803
## 2010-01-29 0.0003705764 -0.0334639203 -0.017912640
## GMT
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2019-04-05 0.026625164 0.030922548 0.0243176416 0.020506013
## 2019-04-12 0.009837286 0.010302220 0.0087964981 0.002273096
## 2019-04-17 0.007102680 0.001519026 0.0003357185 0.006450911
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2019-04-05 -0.011750695 0.010185920 -0.01196537
## 2019-04-12 -0.003739585 0.001737703 0.00585821
## 2019-04-17 -0.009146740 -0.016175196 -0.01466086
##
## Statistics:
##
## $mean
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.0032553074 0.0006902782 0.0023445845 0.0010560521 0.0013060977
## IYR.Adjusted GLD.Adjusted
## 0.0021896923 0.0003379037
##
## $Cov
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 3.403374e-04 2.907946e-04 3.213355e-04 2.765410e-04
## EEM.Adjusted 2.907946e-04 5.014938e-04 3.272298e-04 3.614053e-04
## IWM.Adjusted 3.213355e-04 3.272298e-04 4.355003e-04 3.106169e-04
## EFA.Adjusted 2.765410e-04 3.614053e-04 3.106169e-04 3.572563e-04
## TLT.Adjusted -1.022507e-04 -1.084027e-04 -1.354768e-04 -1.244654e-04
## IYR.Adjusted 2.054827e-04 2.485564e-04 2.564645e-04 2.125934e-04
## GLD.Adjusted 1.994303e-05 9.617686e-05 2.330087e-05 3.877576e-05
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -1.022507e-04 2.054827e-04 1.994303e-05
## EEM.Adjusted -1.084027e-04 2.485564e-04 9.617686e-05
## IWM.Adjusted -1.354768e-04 2.564645e-04 2.330087e-05
## EFA.Adjusted -1.244654e-04 2.125934e-04 3.877576e-05
## TLT.Adjusted 2.007918e-04 -2.534695e-05 4.702835e-05
## IYR.Adjusted -2.534695e-05 3.290357e-04 6.013819e-05
## GLD.Adjusted 4.702835e-05 6.013819e-05 3.103747e-04
##
## $estimator
## [1] "covEstimator"
##
## $mu
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.0032553074 0.0006902782 0.0023445845 0.0010560521 0.0013060977
## IYR.Adjusted GLD.Adjusted
## 0.0021896923 0.0003379037
##
## $Sigma
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 3.403374e-04 2.907946e-04 3.213355e-04 2.765410e-04
## EEM.Adjusted 2.907946e-04 5.014938e-04 3.272298e-04 3.614053e-04
## IWM.Adjusted 3.213355e-04 3.272298e-04 4.355003e-04 3.106169e-04
## EFA.Adjusted 2.765410e-04 3.614053e-04 3.106169e-04 3.572563e-04
## TLT.Adjusted -1.022507e-04 -1.084027e-04 -1.354768e-04 -1.244654e-04
## IYR.Adjusted 2.054827e-04 2.485564e-04 2.564645e-04 2.125934e-04
## GLD.Adjusted 1.994303e-05 9.617686e-05 2.330087e-05 3.877576e-05
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -1.022507e-04 2.054827e-04 1.994303e-05
## EEM.Adjusted -1.084027e-04 2.485564e-04 9.617686e-05
## IWM.Adjusted -1.354768e-04 2.564645e-04 2.330087e-05
## EFA.Adjusted -1.244654e-04 2.125934e-04 3.877576e-05
## TLT.Adjusted 2.007918e-04 -2.534695e-05 4.702835e-05
## IYR.Adjusted -2.534695e-05 3.290357e-04 6.013819e-05
## GLD.Adjusted 4.702835e-05 6.013819e-05 3.103747e-04
Data2 <- portfolioData(lppData1)
getStatistics(Data)
## $mean
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 6.986036e-04 1.871143e-04 5.132239e-04 2.494141e-04 2.857340e-04
## IYR.Adjusted GLD.Adjusted
## 4.752958e-04 8.805332e-05
##
## $Cov
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 1.194103e-04 1.120204e-04 1.125805e-04 9.783943e-05
## EEM.Adjusted 1.120204e-04 1.830069e-04 1.252606e-04 1.334673e-04
## IWM.Adjusted 1.125805e-04 1.252606e-04 1.501961e-04 1.126059e-04
## EFA.Adjusted 9.783943e-05 1.334673e-04 1.126059e-04 1.306461e-04
## TLT.Adjusted -3.882484e-05 -4.520776e-05 -4.921096e-05 -4.649214e-05
## IYR.Adjusted 7.709859e-05 9.694076e-05 9.850002e-05 8.573104e-05
## GLD.Adjusted -1.548174e-06 1.856168e-05 1.581751e-06 9.050407e-06
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.882484e-05 7.709859e-05 -1.548174e-06
## EEM.Adjusted -4.520776e-05 9.694076e-05 1.856168e-05
## IWM.Adjusted -4.921096e-05 9.850002e-05 1.581751e-06
## EFA.Adjusted -4.649214e-05 8.573104e-05 9.050407e-06
## TLT.Adjusted 7.563093e-05 -2.135395e-05 1.627228e-05
## IYR.Adjusted -2.135395e-05 1.207100e-04 8.027814e-06
## GLD.Adjusted 1.627228e-05 8.027814e-06 9.778999e-05
##
## $estimator
## [1] "covEstimator"
##
## $mu
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 6.986036e-04 1.871143e-04 5.132239e-04 2.494141e-04 2.857340e-04
## IYR.Adjusted GLD.Adjusted
## 4.752958e-04 8.805332e-05
##
## $Sigma
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 1.194103e-04 1.120204e-04 1.125805e-04 9.783943e-05
## EEM.Adjusted 1.120204e-04 1.830069e-04 1.252606e-04 1.334673e-04
## IWM.Adjusted 1.125805e-04 1.252606e-04 1.501961e-04 1.126059e-04
## EFA.Adjusted 9.783943e-05 1.334673e-04 1.126059e-04 1.306461e-04
## TLT.Adjusted -3.882484e-05 -4.520776e-05 -4.921096e-05 -4.649214e-05
## IYR.Adjusted 7.709859e-05 9.694076e-05 9.850002e-05 8.573104e-05
## GLD.Adjusted -1.548174e-06 1.856168e-05 1.581751e-06 9.050407e-06
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.882484e-05 7.709859e-05 -1.548174e-06
## EEM.Adjusted -4.520776e-05 9.694076e-05 1.856168e-05
## IWM.Adjusted -4.921096e-05 9.850002e-05 1.581751e-06
## EFA.Adjusted -4.649214e-05 8.573104e-05 9.050407e-06
## TLT.Adjusted 7.563093e-05 -2.135395e-05 1.627228e-05
## IYR.Adjusted -2.135395e-05 1.207100e-04 8.027814e-06
## GLD.Adjusted 1.627228e-05 8.027814e-06 9.778999e-05
tgPortfolio1 <- tangencyPortfolio(lppAssets1)
str(tgPortfolio1)
## Formal class 'fPORTFOLIO' [package "fPortfolio"] with 7 slots
## ..@ call : language maxratioPortfolio(data = data, spec = spec, constraints = constraints)
## ..@ data :Formal class 'fPFOLIODATA' [package "fPortfolio"] with 3 slots
## .. .. ..@ data :List of 3
## .. .. .. ..$ series :Time Series:
## Name: object
## Data Matrix:
## Dimension: 484 7
## Column Names: QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## Row Names: 2010-01-15 ... 2019-04-17
## Positions:
## Start: 2010-01-15
## End: 2019-04-17
## With:
## Format: %Y-%m-%d
## FinCenter: GMT
## Units: QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## Title: Time Series Object
## Documentation: Thu Apr 18 11:55:45 2019
## .. .. .. ..$ nAssets: int 7
## .. .. .. ..$ names : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ statistics:List of 5
## .. .. .. ..$ mean : Named num [1:7] 0.00326 0.00069 0.00234 0.00106 0.00131 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ Cov : num [1:7, 1:7] 0.00034 0.000291 0.000321 0.000277 -0.000102 ...
## .. .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ estimator: chr "covEstimator"
## .. .. .. ..$ mu : Named num [1:7] 0.00326 0.00069 0.00234 0.00106 0.00131 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ Sigma : num [1:7, 1:7] 0.00034 0.000291 0.000321 0.000277 -0.000102 ...
## .. .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ tailRisk : list()
## ..@ spec :Formal class 'fPFOLIOSPEC' [package "fPortfolio"] with 5 slots
## .. .. ..@ model :List of 5
## .. .. .. ..$ type : chr "MV"
## .. .. .. ..$ optimize : chr "minRisk"
## .. .. .. ..$ estimator: chr "covEstimator"
## .. .. .. ..$ tailRisk : list()
## .. .. .. ..$ params :List of 1
## .. .. .. .. ..$ alpha: num 0.05
## .. .. ..@ portfolio:List of 6
## .. .. .. ..$ weights : num [1:7] 0.503 0 0 0 0.497 ...
## .. .. .. .. ..- attr(*, "invest")= num 1
## .. .. .. ..$ targetReturn : logi NA
## .. .. .. ..$ targetRisk : logi NA
## .. .. .. ..$ riskFreeRate : num 0
## .. .. .. ..$ nFrontierPoints: num 50
## .. .. .. ..$ status : num 0
## .. .. ..@ optim :List of 5
## .. .. .. ..$ solver : chr "solveRquadprog"
## .. .. .. ..$ objective: chr [1:3] "portfolioObjective" "portfolioReturn" "portfolioRisk"
## .. .. .. ..$ options :List of 1
## .. .. .. .. ..$ meq: num 2
## .. .. .. ..$ control : list()
## .. .. .. ..$ trace : logi FALSE
## .. .. ..@ messages :List of 2
## .. .. .. ..$ messages: logi FALSE
## .. .. .. ..$ note : chr ""
## .. .. ..@ ampl :List of 5
## .. .. .. ..$ ampl : logi FALSE
## .. .. .. ..$ project : chr "ampl"
## .. .. .. ..$ solver : chr "ipopt"
## .. .. .. ..$ protocol: logi FALSE
## .. .. .. ..$ trace : logi FALSE
## ..@ constraints:Formal class 'fPFOLIOCON' [package "fPortfolio"] with 16 slots
## .. .. ..@ stringConstraints : chr "LongOnly"
## .. .. ..@ minWConstraints : Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxWConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ eqsumWConstraints : num [1, 1:8] -1 -1 -1 -1 -1 -1 -1 -1
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : chr "Budget"
## .. .. .. .. ..$ : chr [1:8] "ceq" "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" ...
## .. .. .. ..- attr(*, "na.action")= 'omit' Named num 1
## .. .. .. .. ..- attr(*, "names")= chr "Return"
## .. .. ..@ minsumWConstraints : logi [1, 1] NA
## .. .. ..@ maxsumWConstraints : logi [1, 1] NA
## .. .. ..@ minBConstraints : Named num [1:7] -Inf -Inf -Inf -Inf -Inf ...
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxBConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ listFConstraints : list()
## .. .. ..@ minFConstraints : num(0)
## .. .. ..@ maxFConstraints : num(0)
## .. .. ..@ minBuyinConstraints: Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxBuyinConstraints: Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ nCardConstraints : int 7
## .. .. ..@ minCardConstraints : Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxCardConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## ..@ portfolio :Formal class 'fPFOLIOVAL' [package "fPortfolio"] with 2 slots
## .. .. ..@ portfolio:List of 6
## .. .. .. ..$ weights : Named num [1:7] 0.503 0 0 0 0.497 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ covRiskBudgets: Named num [1:7] 0.716 0 0 0 0.284 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ targetReturn : Named num [1:2] 0.00229 0.00229
## .. .. .. .. ..- attr(*, "names")= chr [1:2] "mean" "mu"
## .. .. .. ..$ targetRisk : Named num [1:4] 0.0092 0.0092 0.0195 0.0136
## .. .. .. .. ..- attr(*, "names")= chr [1:4] "Cov" "Sigma" "CVaR" "VaR"
## .. .. .. ..$ targetAlpha : num 0.05
## .. .. .. ..$ status : num 0
## .. .. ..@ messages : list()
## ..@ title : chr "Tangency Portfolio"
## ..@ description: chr "Thu Apr 18 11:55:45 2019 by user: Setsnee"
print(tgPortfolio1)
##
## Title:
## MV Tangency Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: LongOnly
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.5031 0.0000 0.0000 0.0000 0.4969
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0000
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.7162 0.0000 0.0000 0.0000 0.2838
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0000
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0023 0.0092 0.0195 0.0136
##
## Description:
## Thu Apr 18 11:55:45 2019 by user: Setsnee
mvPortfolio1 <- minvariancePortfolio(lppAssets1)
print(mvPortfolio1)
##
## Title:
## MV Minimum Variance Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: LongOnly
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.0779 0.0000 0.1047 0.2014 0.5304
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0856
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.0779 0.0000 0.1047 0.2014 0.5304
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0856
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0014 0.0080 0.0177 0.0130
##
## Description:
## Thu Apr 18 11:55:45 2019 by user: Setsnee
globminSpec1 <- portfolioSpec()
shortConstraints1 <- c("minW[1:3]=-999", "maxW[1:3]=+999")
mvPortfolio.short1 <- minvariancePortfolio(lppAssets1, spec = globminSpec, constraints = shortConstraints1 )
print(mvPortfolio.short1)
##
## Title:
## MV Minimum Variance Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: minW maxW
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.0830 -0.1340 0.1103 0.3154 0.5188
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1065
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.0830 -0.1340 0.1103 0.3154 0.5188
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1065
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0015 0.0078 0.0165 0.0121
##
## Description:
## Thu Apr 18 11:55:45 2019 by user: Setsnee
weightsPie(mvPortfolio.short1, radius = 0.7)
text1 <- "Global Minimum Risk Portfolio"
mtext(text1, side = 3, line = 1.5, font = 2, cex = 0.7, adj = 0)
weightedReturnsPie(mvPortfolio.short1, radius = 0.8, legend = FALSE)
covRiskBudgetsPie(mvPortfolio.short1, radius = 0.9, legend = FALSE)
Spec1<-portfolioSpec()
setTargetReturn(Spec)<- 0.007
efficientPortfolio.short1 <- efficientPortfolio(lppAssets1, spec = Spec, constraints = shortConstraints1 )
print(efficientPortfolio.short1)
##
## Title:
## MV Efficient Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: minW maxW
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 2.5592 -1.5126 -0.6001 0.0000 0.1039
## IYR.Adjusted GLD.Adjusted
## 0.4495 0.0000
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.8638 0.1759 -0.1059 0.0000 -0.0008
## IYR.Adjusted GLD.Adjusted
## 0.0670 0.0000
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0070 0.0308 0.0623 0.0449
##
## Description:
## Thu Apr 18 11:55:45 2019 by user: Setsnee
#4. By 3, now use year 2010 data to calculate monthly returns and their covariance matrix, and compute weights of minimum variance portfolio (MVP).
month.end <- endpoints(weekly, on = "months")
monthly <- period.apply(weekly, INDEX = month.end, FUN = mean)
head(monthly)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-29 41.23395 34.58503 55.37050 42.80149
## 2010-02-26 39.82370 32.37845 53.87658 40.20060
## 2010-03-26 42.69949 34.28048 58.94166 42.12582
## 2010-04-30 44.70087 35.78490 62.41193 43.14215
## 2010-05-28 42.24750 32.41457 59.69505 38.19923
## 2010-06-25 41.51868 32.41172 56.99738 37.52401
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-29 69.21521 31.89010 109.4365
## 2010-02-26 69.30886 31.22861 107.6965
## 2010-03-26 69.46865 34.47091 109.1525
## 2010-04-30 69.02617 36.77341 112.0205
## 2010-05-28 73.86319 36.14825 117.9895
## 2010-06-25 75.63452 35.50740 120.5290
monthly.ret<-monthly/lag(monthly)-1
head(monthly.ret)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-01-29 NA NA NA NA
## 2010-02-26 -0.03420135 -6.380161e-02 -0.02698056 -0.06076643
## 2010-03-26 0.07221302 5.874383e-02 0.09401280 0.04789049
## 2010-04-30 0.04687134 4.388566e-02 0.05887635 0.02412609
## 2010-05-28 -0.05488405 -9.418308e-02 -0.04353154 -0.11457288
## 2010-06-25 -0.01725123 -8.787869e-05 -0.04519071 -0.01767637
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-29 NA NA NA
## 2010-02-26 0.001352959 -0.02074288 -0.01589963
## 2010-03-26 0.002305498 0.10382496 0.01351946
## 2010-04-30 -0.006369374 0.06679530 0.02627517
## 2010-05-28 0.070075059 -0.01700025 0.05328489
## 2010-06-25 0.023981252 -0.01772841 0.02152311
monthly.ret<-monthly.ret[-1,]
head(monthly.ret)
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-02-26 -0.03420135 -6.380161e-02 -0.02698056 -0.06076643
## 2010-03-26 0.07221302 5.874383e-02 0.09401280 0.04789049
## 2010-04-30 0.04687134 4.388566e-02 0.05887635 0.02412609
## 2010-05-28 -0.05488405 -9.418308e-02 -0.04353154 -0.11457288
## 2010-06-25 -0.01725123 -8.787869e-05 -0.04519071 -0.01767637
## 2010-07-30 -0.01893788 2.892251e-02 -0.02883859 0.03535766
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-02-26 0.001352959 -0.02074288 -0.01589963
## 2010-03-26 0.002305498 0.10382496 0.01351946
## 2010-04-30 -0.006369374 0.06679530 0.02627517
## 2010-05-28 0.070075059 -0.01700025 0.05328489
## 2010-06-25 0.023981252 -0.01772841 0.02152311
## 2010-07-30 0.030514445 -0.00933387 -0.02778502
class(monthly.ret)
## [1] "xts" "zoo"
lppAssets2 <- as.timeSeries(monthly.ret)
class(lppAssets2)
## [1] "timeSeries"
## attr(,"package")
## [1] "timeSeries"
lppData2 <- portfolioData(data = lppAssets2, spec = portfolioSpec())
print(lppData2)
##
## Head/Tail Series Data:
##
## GMT
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2010-02-26 -0.03420135 -0.06380161 -0.02698056 -0.06076643
## 2010-03-26 0.07221302 0.05874383 0.09401280 0.04789049
## 2010-04-30 0.04687134 0.04388566 0.05887635 0.02412609
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-02-26 0.001352959 -0.02074288 -0.01589963
## 2010-03-26 0.002305498 0.10382496 0.01351946
## 2010-04-30 -0.006369374 0.06679530 0.02627517
## GMT
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 2019-02-22 0.05966021 0.049246767 0.07393317 0.03785831
## 2019-03-29 0.04132692 0.006866158 0.01431922 0.02583418
## 2019-04-17 0.05061341 0.032986620 0.01572982 0.02569849
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2019-02-22 0.005000788 0.08372629 0.02271989
## 2019-03-29 0.008624522 0.01898072 -0.01044759
## 2019-04-17 0.012315422 0.02623524 -0.01178415
##
## Statistics:
##
## $mean
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.014133681 0.003059835 0.010153368 0.004480647 0.005625932
## IYR.Adjusted GLD.Adjusted
## 0.009619608 0.001523347
##
## $Cov
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 0.0010422344 0.0008283752 0.0009959759 8.071929e-04
## EEM.Adjusted 0.0008283752 0.0016946976 0.0009409471 1.085878e-03
## IWM.Adjusted 0.0009959759 0.0009409471 0.0014946143 9.070356e-04
## EFA.Adjusted 0.0008071929 0.0010858778 0.0009070356 1.068404e-03
## TLT.Adjusted -0.0003689707 -0.0002580383 -0.0005406233 -3.932136e-04
## IYR.Adjusted 0.0005556875 0.0006927789 0.0007530784 5.557701e-04
## GLD.Adjusted -0.0001358086 0.0002691102 -0.0002097763 -8.983823e-05
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.689707e-04 5.556875e-04 -1.358086e-04
## EEM.Adjusted -2.580383e-04 6.927789e-04 2.691102e-04
## IWM.Adjusted -5.406233e-04 7.530784e-04 -2.097763e-04
## EFA.Adjusted -3.932136e-04 5.557701e-04 -8.983823e-05
## TLT.Adjusted 8.257865e-04 8.653119e-05 3.526863e-04
## IYR.Adjusted 8.653119e-05 1.063552e-03 2.574033e-05
## GLD.Adjusted 3.526863e-04 2.574033e-05 1.143711e-03
##
## $estimator
## [1] "covEstimator"
##
## $mu
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.014133681 0.003059835 0.010153368 0.004480647 0.005625932
## IYR.Adjusted GLD.Adjusted
## 0.009619608 0.001523347
##
## $Sigma
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 0.0010422344 0.0008283752 0.0009959759 8.071929e-04
## EEM.Adjusted 0.0008283752 0.0016946976 0.0009409471 1.085878e-03
## IWM.Adjusted 0.0009959759 0.0009409471 0.0014946143 9.070356e-04
## EFA.Adjusted 0.0008071929 0.0010858778 0.0009070356 1.068404e-03
## TLT.Adjusted -0.0003689707 -0.0002580383 -0.0005406233 -3.932136e-04
## IYR.Adjusted 0.0005556875 0.0006927789 0.0007530784 5.557701e-04
## GLD.Adjusted -0.0001358086 0.0002691102 -0.0002097763 -8.983823e-05
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.689707e-04 5.556875e-04 -1.358086e-04
## EEM.Adjusted -2.580383e-04 6.927789e-04 2.691102e-04
## IWM.Adjusted -5.406233e-04 7.530784e-04 -2.097763e-04
## EFA.Adjusted -3.932136e-04 5.557701e-04 -8.983823e-05
## TLT.Adjusted 8.257865e-04 8.653119e-05 3.526863e-04
## IYR.Adjusted 8.653119e-05 1.063552e-03 2.574033e-05
## GLD.Adjusted 3.526863e-04 2.574033e-05 1.143711e-03
Data2 <- portfolioData(lppData2)
getStatistics(Data2)
## $mean
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.014133681 0.003059835 0.010153368 0.004480647 0.005625932
## IYR.Adjusted GLD.Adjusted
## 0.009619608 0.001523347
##
## $Cov
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 0.0010422344 0.0008283752 0.0009959759 8.071929e-04
## EEM.Adjusted 0.0008283752 0.0016946976 0.0009409471 1.085878e-03
## IWM.Adjusted 0.0009959759 0.0009409471 0.0014946143 9.070356e-04
## EFA.Adjusted 0.0008071929 0.0010858778 0.0009070356 1.068404e-03
## TLT.Adjusted -0.0003689707 -0.0002580383 -0.0005406233 -3.932136e-04
## IYR.Adjusted 0.0005556875 0.0006927789 0.0007530784 5.557701e-04
## GLD.Adjusted -0.0001358086 0.0002691102 -0.0002097763 -8.983823e-05
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.689707e-04 5.556875e-04 -1.358086e-04
## EEM.Adjusted -2.580383e-04 6.927789e-04 2.691102e-04
## IWM.Adjusted -5.406233e-04 7.530784e-04 -2.097763e-04
## EFA.Adjusted -3.932136e-04 5.557701e-04 -8.983823e-05
## TLT.Adjusted 8.257865e-04 8.653119e-05 3.526863e-04
## IYR.Adjusted 8.653119e-05 1.063552e-03 2.574033e-05
## GLD.Adjusted 3.526863e-04 2.574033e-05 1.143711e-03
##
## $estimator
## [1] "covEstimator"
##
## $mu
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.014133681 0.003059835 0.010153368 0.004480647 0.005625932
## IYR.Adjusted GLD.Adjusted
## 0.009619608 0.001523347
##
## $Sigma
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## QQQ.Adjusted 0.0010422344 0.0008283752 0.0009959759 8.071929e-04
## EEM.Adjusted 0.0008283752 0.0016946976 0.0009409471 1.085878e-03
## IWM.Adjusted 0.0009959759 0.0009409471 0.0014946143 9.070356e-04
## EFA.Adjusted 0.0008071929 0.0010858778 0.0009070356 1.068404e-03
## TLT.Adjusted -0.0003689707 -0.0002580383 -0.0005406233 -3.932136e-04
## IYR.Adjusted 0.0005556875 0.0006927789 0.0007530784 5.557701e-04
## GLD.Adjusted -0.0001358086 0.0002691102 -0.0002097763 -8.983823e-05
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## QQQ.Adjusted -3.689707e-04 5.556875e-04 -1.358086e-04
## EEM.Adjusted -2.580383e-04 6.927789e-04 2.691102e-04
## IWM.Adjusted -5.406233e-04 7.530784e-04 -2.097763e-04
## EFA.Adjusted -3.932136e-04 5.557701e-04 -8.983823e-05
## TLT.Adjusted 8.257865e-04 8.653119e-05 3.526863e-04
## IYR.Adjusted 8.653119e-05 1.063552e-03 2.574033e-05
## GLD.Adjusted 3.526863e-04 2.574033e-05 1.143711e-03
tgPortfolio2 <- tangencyPortfolio(lppAssets2)
str(tgPortfolio2)
## Formal class 'fPORTFOLIO' [package "fPortfolio"] with 7 slots
## ..@ call : language maxratioPortfolio(data = data, spec = spec, constraints = constraints)
## ..@ data :Formal class 'fPFOLIODATA' [package "fPortfolio"] with 3 slots
## .. .. ..@ data :List of 3
## .. .. .. ..$ series :Time Series:
## Name: object
## Data Matrix:
## Dimension: 111 7
## Column Names: QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## Row Names: 2010-02-26 ... 2019-04-17
## Positions:
## Start: 2010-02-26
## End: 2019-04-17
## With:
## Format: %Y-%m-%d
## FinCenter: GMT
## Units: QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## Title: Time Series Object
## Documentation: Thu Apr 18 11:55:46 2019
## .. .. .. ..$ nAssets: int 7
## .. .. .. ..$ names : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ statistics:List of 5
## .. .. .. ..$ mean : Named num [1:7] 0.01413 0.00306 0.01015 0.00448 0.00563 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ Cov : num [1:7, 1:7] 0.001042 0.000828 0.000996 0.000807 -0.000369 ...
## .. .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ estimator: chr "covEstimator"
## .. .. .. ..$ mu : Named num [1:7] 0.01413 0.00306 0.01015 0.00448 0.00563 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ Sigma : num [1:7, 1:7] 0.001042 0.000828 0.000996 0.000807 -0.000369 ...
## .. .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. .. .. ..$ : chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ tailRisk : list()
## ..@ spec :Formal class 'fPFOLIOSPEC' [package "fPortfolio"] with 5 slots
## .. .. ..@ model :List of 5
## .. .. .. ..$ type : chr "MV"
## .. .. .. ..$ optimize : chr "minRisk"
## .. .. .. ..$ estimator: chr "covEstimator"
## .. .. .. ..$ tailRisk : list()
## .. .. .. ..$ params :List of 1
## .. .. .. .. ..$ alpha: num 0.05
## .. .. ..@ portfolio:List of 6
## .. .. .. ..$ weights : num [1:7] 0.554 0 0 0 0.446 ...
## .. .. .. .. ..- attr(*, "invest")= num 1
## .. .. .. ..$ targetReturn : logi NA
## .. .. .. ..$ targetRisk : logi NA
## .. .. .. ..$ riskFreeRate : num 0
## .. .. .. ..$ nFrontierPoints: num 50
## .. .. .. ..$ status : num 0
## .. .. ..@ optim :List of 5
## .. .. .. ..$ solver : chr "solveRquadprog"
## .. .. .. ..$ objective: chr [1:3] "portfolioObjective" "portfolioReturn" "portfolioRisk"
## .. .. .. ..$ options :List of 1
## .. .. .. .. ..$ meq: num 2
## .. .. .. ..$ control : list()
## .. .. .. ..$ trace : logi FALSE
## .. .. ..@ messages :List of 2
## .. .. .. ..$ messages: logi FALSE
## .. .. .. ..$ note : chr ""
## .. .. ..@ ampl :List of 5
## .. .. .. ..$ ampl : logi FALSE
## .. .. .. ..$ project : chr "ampl"
## .. .. .. ..$ solver : chr "ipopt"
## .. .. .. ..$ protocol: logi FALSE
## .. .. .. ..$ trace : logi FALSE
## ..@ constraints:Formal class 'fPFOLIOCON' [package "fPortfolio"] with 16 slots
## .. .. ..@ stringConstraints : chr "LongOnly"
## .. .. ..@ minWConstraints : Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxWConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ eqsumWConstraints : num [1, 1:8] -1 -1 -1 -1 -1 -1 -1 -1
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : chr "Budget"
## .. .. .. .. ..$ : chr [1:8] "ceq" "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" ...
## .. .. .. ..- attr(*, "na.action")= 'omit' Named num 1
## .. .. .. .. ..- attr(*, "names")= chr "Return"
## .. .. ..@ minsumWConstraints : logi [1, 1] NA
## .. .. ..@ maxsumWConstraints : logi [1, 1] NA
## .. .. ..@ minBConstraints : Named num [1:7] -Inf -Inf -Inf -Inf -Inf ...
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxBConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ listFConstraints : list()
## .. .. ..@ minFConstraints : num(0)
## .. .. ..@ maxFConstraints : num(0)
## .. .. ..@ minBuyinConstraints: Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxBuyinConstraints: Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ nCardConstraints : int 7
## .. .. ..@ minCardConstraints : Named num [1:7] 0 0 0 0 0 0 0
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. ..@ maxCardConstraints : Named num [1:7] 1 1 1 1 1 1 1
## .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## ..@ portfolio :Formal class 'fPFOLIOVAL' [package "fPortfolio"] with 2 slots
## .. .. ..@ portfolio:List of 6
## .. .. .. ..$ weights : Named num [1:7] 0.554 0 0 0 0.446 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ covRiskBudgets: Named num [1:7] 0.757 0 0 0 0.243 ...
## .. .. .. .. ..- attr(*, "names")= chr [1:7] "QQQ.Adjusted" "EEM.Adjusted" "IWM.Adjusted" "EFA.Adjusted" ...
## .. .. .. ..$ targetReturn : Named num [1:2] 0.0103 0.0103
## .. .. .. .. ..- attr(*, "names")= chr [1:2] "mean" "mu"
## .. .. .. ..$ targetRisk : Named num [1:4] 0.0174 0.0174 0.0314 0.0263
## .. .. .. .. ..- attr(*, "names")= chr [1:4] "Cov" "Sigma" "CVaR" "VaR"
## .. .. .. ..$ targetAlpha : num 0.05
## .. .. .. ..$ status : num 0
## .. .. ..@ messages : list()
## ..@ title : chr "Tangency Portfolio"
## ..@ description: chr "Thu Apr 18 11:55:46 2019 by user: Setsnee"
print(tgPortfolio2)
##
## Title:
## MV Tangency Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: LongOnly
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.5537 0.0000 0.0000 0.0000 0.4463
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0000
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.7571 0.0000 0.0000 0.0000 0.2429
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.0000
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0103 0.0174 0.0314 0.0263
##
## Description:
## Thu Apr 18 11:55:46 2019 by user: Setsnee
mvPortfolio2 <- minvariancePortfolio(lppAssets2)
print(mvPortfolio2)
##
## Title:
## MV Minimum Variance Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: LongOnly
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1127 0.0000 0.1482 0.1748 0.4546
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1096
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1127 0.0000 0.1482 0.1748 0.4546
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1096
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0066 0.0150 0.0309 0.0237
##
## Description:
## Thu Apr 18 11:55:46 2019 by user: Setsnee
globminSpec2 <- portfolioSpec()
shortConstraints2 <- c("minW[1:3]=-999", "maxW[1:3]=+999")
mvPortfolio.short2 <- minvariancePortfolio(lppAssets2, spec = globminSpec, constraints = shortConstraints2 )
print(mvPortfolio.short2)
##
## Title:
## MV Minimum Variance Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: minW maxW
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1017 -0.2134 0.1556 0.3660 0.4276
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1625
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1017 -0.2134 0.1556 0.3660 0.4276
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1625
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0067 0.0141 0.0282 0.0219
##
## Description:
## Thu Apr 18 11:55:46 2019 by user: Setsnee
weightsPie(mvPortfolio.short2, radius = 0.7)
text2 <- "Global Minimum Risk Portfolio"
mtext(text2, side = 3, line = 1.5, font = 2, cex = 0.7, adj = 0)
weightedReturnsPie(mvPortfolio.short2, radius = 0.8, legend = FALSE)
covRiskBudgetsPie(mvPortfolio.short2, radius = 0.9, legend = FALSE)
Spec2<-portfolioSpec()
setTargetReturn(Spec)<- 0.007
efficientPortfolio.short2 <- efficientPortfolio(lppAssets2, spec = Spec, constraints = shortConstraints2 )
print(efficientPortfolio.short2)
##
## Title:
## MV Efficient Portfolio
## Estimator: covEstimator
## Solver: solveRquadprog
## Optimize: minRisk
## Constraints: minW maxW
##
## Portfolio Weights:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1378 -0.2142 0.1511 0.3400 0.4286
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1566
##
## Covariance Risk Budgets:
## QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted TLT.Adjusted
## 0.1456 -0.2075 0.1549 0.3332 0.4240
## IYR.Adjusted GLD.Adjusted
## 0.0000 0.1498
##
## Target Returns and Risks:
## mean Cov CVaR VaR
## 0.0070 0.0142 0.0276 0.0218
##
## Description:
## Thu Apr 18 11:55:46 2019 by user: Setsnee
#5. Download Fama/French 3 factors models monthly data and redo question
options(digits=5)
FF_data = read.csv("~/F-F_Research_Data_Factors.CSV")
head(FF_data)
## X Mkt.RF SMB HML RF
## 1 192607 2.96 -2.3 -2.87 0.22
## 2 192608 2.64 -1.4 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.2 -0.35 0.31
## 6 192612 2.62 -0.04 -0.02 0.28
names(FF_data)
## [1] "X" "Mkt.RF" "SMB" "HML" "RF"
attach(FF_data)
library("Ecdat")
## Loading required package: Ecfun
##
## Attaching package: 'Ecfun'
## The following object is masked from 'package:base':
##
## sign
##
## Attaching package: 'Ecdat'
## The following object is masked from 'package:datasets':
##
## Orange
library("robust")
## Loading required package: fit.models
stocks=cbind(N=Mkt.RF,SMB,HML)
fit = lm(cbind(Mkt.RF,SMB,HML)~RF)
options(digits=3)
SMB
## [1] -2.3 -1.4 -1.32 0.04 -0.2 -0.04 -0.56 -0.1 -1.6
## [10] 0.43 1.41 0.47 -3.23 -0.72 -3.57 2.13 2.76 0.93
## [19] 4.25 -2.03 -0.26 3.82 2.98 -3.5 -1.35 -2.07 2.18
## [28] 2.27 -1.81 -0.85 -3.55 -0.39 -4.78 -0.99 -5.46 -2.17
## [37] -3.88 -9.52 1.17 -4.08 -1.91 -4.2 3.58 0.12 3.44
## [46] -0.17 -2.04 -3.22 -0.37 -2.22 -2.22 -0.1 2.21 -4.68
## [55] 3.81 3.39 3.07 -4.61 5.16 -5.38 1.43 -1.97 0.56
## [64] -1.87 4.3 -0.56 3.94 -2.77 2.27 1.44 3.72 0.35
## [73] -4.44 14.29 -2.43 -2.76 2.08 -8.27 0.69 -2.75 3.9
## [82] 4.56 36.7 8.67 -1.01 -5.45 -0.32 -0.08 -6.48 0.66
## [91] 12.53 5.19 2.51 2.8 -0.26 -2.14 -6.94 5.42 -1.52
## [100] 1.24 6.49 3.08 1.07 0.42 -3.54 -1.56 -3.34 -2.51
## [109] 1.47 6.28 1.57 2.65 4.3 0.22 5.1 1.14 0.66
## [118] -6.03 0.81 -3.25 1.14 0.72 3.07 -2.39 9.01 3.61
## [127] 4.31 1.23 -1.78 -3.77 -0.66 -3.65 0.85 0.42 -6.89
## [136] 0.45 -3.65 -7.76 4.97 0.35 -4.24 6.37 -2.47 4.05
## [145] 6.66 -2.44 -2.72 5.83 -2.56 -1.8 -1.56 0.63 -4.76
## [154] 1.66 2.81 -1.02 4.32 -4.61 20.23 -0.01 -5.07 0.79
## [163] 0.24 2.51 1.25 3.92 -6.66 -2.13 1.01 -0.11 3.22
## [172] 0.28 1.94 -2.15 1 -1.57 0.1 -1.69 -0.66 1.32
## [181] 5.7 -0.41 -0.99 -2.02 -1.21 -2.98 7.52 1.72 1.78
## [190] -0.6 -3.05 -1.22 -0.16 -0.09 0.66 1.82 -1.54 -2.49
## [199] 8.78 4.84 5.03 2.06 4.41 -1.06 -2.41 -0.62 1.28
## [208] 0.58 -1.64 3.34 2.56 -0.1 1.71 -1.35 1.67 4.04
## [217] 0.55 2.41 0.47 -0.14 0.37 2.24 2.44 1.56 -1.61
## [226] 0.32 1.51 3.1 -1.46 1.61 1.71 2.46 4.16 2.12
## [235] 4.02 -0.73 0.31 2.37 1.46 -1.53 -2.06 -1.78 -4.41
## [244] 0.09 -0.4 0.06 2.18 0.68 -1.61 -3.97 -3.26 -0.31
## [253] 1.43 0.3 1.64 0.51 -1.74 -2.48 2.49 -1.71 0.13
## [262] -1.66 0.93 -1.86 -0.32 -1.1 -1.23 -1.5 -0.62 -2.8
## [271] 1.81 -1.89 2.48 -0.89 -0.77 -0.88 0.57 0.13 1.05
## [280] 1.03 -0.93 2.07 3.36 0.04 -1.41 1.99 -2.12 -2.38
## [289] 0.51 0.73 0.57 -0.58 -0.84 1.49 1.73 0.09 -0.64
## [298] -1.49 -0.01 -1.95 -1.99 0.99 1.9 -0.22 -0.29 -2.25
## [307] -0.61 0.79 -2.99 0.48 -1.01 -1.61 -0.4 1.18 1.15
## [316] -1.06 -0.71 -1.48 3.58 2.15 -0.19 0.28 -0.07 -1.86
## [325] -1.05 0.36 -0.85 -1.37 -1.29 -0.84 0.46 -0.17 -0.49
## [334] -3.48 0.39 0.41 1.07 2.66 -2.54 0.59 -2.62 2.14
## [343] 0.25 1.54 -0.66 -1.79 -0.29 -4.65 -1.36 -0.38 0.3
## [352] 1.5 -2.46 2.08 0.44 -1.04 -2.42 0.07 1.5 -1.46
## [361] -1.68 1.9 1.56 -0.09 -0.22 -0.03 3.4 -0.72 0.27
## [370] -1.6 -1.07 0.55 -0.76 0.06 0.08 -2.52 0.4 -0.93
## [379] 4.36 0.7 0.63 -0.59 2.24 -0.24 0.47 1.19 0.15
## [388] 1.13 2.06 -2.07 3.02 1.49 1.48 -0.58 -2.15 0.68
## [397] -0.32 -0.78 -0.09 1.43 1.24 -0.6 2.09 0.51 -0.51
## [406] 0.31 1.21 -0.22 -0.52 0.9 -1.12 -3.97 0.34 -1.56
## [415] 0.65 3.97 3.23 0.13 1.95 -2.48 -1.88 -1.81 -1.13
## [424] -1.96 1.03 -1.12 1.86 -1.18 0.23 -0.99 -3.02 -0.76
## [433] 1.61 1.25 -2.49 -4.01 2.58 -3.8 3.09 0.48 -2.51
## [442] -1.32 1.07 -0.26 -0.55 -0.95 -0.3 -0.54 -1.13 -1.96
## [451] -0.19 0.09 0.99 -1.36 -0.9 -0.26 0.23 0.09 -0.51
## [460] 0.45 0.61 -0.25 2.68 3.48 1.78 1.19 0.03 -4.35
## [469] 0.87 2.84 0.63 2.48 4.69 2.09 3.86 4.46 0.94
## [478] 3.43 -4.67 1.05 -0.38 -3.33 -1.1 -6.63 4.37 1.89
## [487] 8.47 3.36 1.74 0.6 2 6.01 3.08 0.47 3.1
## [496] 1.42 0.2 5.73 3.91 -2.95 -1.28 5.73 6.43 -0.17
## [505] -1.3 2.34 2.76 -0.47 2.36 3.44 -0.78 -3.89 -0.25
## [514] -0.88 -0.27 -5.39 -3.21 0.94 1.2 3.81 -2.53 -3.67
## [523] 2.9 -2.4 -2.32 -6.11 -4.52 -2.16 -0.53 1.53 8.59
## [532] -4.29 -4.07 2.96 7.36 1.85 2.54 -0.47 -1.08 -1.43
## [541] -1.51 -0.16 0.41 -1.8 -2.85 3.32 6.12 1.37 -0.26
## [550] 0.02 -2.79 0.34 -2.89 -4.09 -2.66 -2.74 -1.1 -1.86
## [559] -3.49 -4 -2.82 -4 -6.13 -2.95 7.94 -2.01 2.92
## [568] -0.23 -7.74 -5.26 9.77 0.08 2.49 -0.65 -2.98 -0.2
## [577] 0.92 -0.68 0.27 -3.52 -1.17 -4.84 11.01 0.16 3.76
## [586] -0.53 3.83 0.77 2.68 -3.24 -0.13 -4.03 -1.18 -0.75
## [595] 4.81 7.04 -1.19 -0.04 -1.24 -1.35 0.3 -2.02 0
## [604] 0.23 2.31 3 4.77 1.08 0.99 -0.12 1.17 2.13
## [613] 2.12 1.51 1.45 1.27 3.74 1.36 2.22 3.59 3.49
## [622] 0.4 4.56 1.72 0.28 5.06 -0.4 -9.91 3.02 1.25
## [631] 3.65 0.44 3.2 2.18 0.56 1.16 1.31 2.07 -0.28
## [640] -3.33 2.73 4.22 1.68 -1.81 -6.62 0.94 2.16 1.67
## [649] 4.25 3.92 0.85 2.43 -3.43 -0.26 3.01 -0.28 3.65
## [658] 4.41 1.98 -0.84 -2.21 -1.94 -2.7 2.14 -0.99 1.15
## [667] -1.44 0.48 -0.22 1.5 0.46 -0.4 0.85 -4.09 2.86
## [676] 2.38 4.8 -0.18 2.72 3.27 1.78 0.52 6.13 0.9
## [685] 1.47 -4.29 0.59 -3.6 2.04 -0.29 -0.44 -1.7 0.07
## [694] -1.2 0.04 -0.32 -2.22 -0.24 0.2 -1.22 -0.6 -0.6
## [703] 3.27 0.76 -1.17 0.15 -2.24 0.62 2.85 -0.35 -1.59
## [712] -1.56 0.23 -0.51 1.23 -0.64 -0.53 2.84 -1.32 -0.9
## [721] -3.33 -4.2 2.28 -2.41 -1.93 0.09 -1.8 3.48 0.37
## [730] -1.69 -0.52 -2.21 -0.7 -0.74 0.52 -8.38 2.78 0.14
## [739] -0.76 3.33 6.13 0.96 -2.63 2.16 -0.21 0.12 -1.33
## [748] -2.89 -1.77 1.89 -2.12 2.78 0.74 -0.55 0.04 -1.01
## [757] -4.02 0.47 0.3 -3.26 -1.28 -2.38 -1.3 1.02 1.52
## [766] -0.51 -2.54 1.4 -3.21 -3.59 -3.64 -5.53 0.34 0.78
## [775] 3.81 3.94 3.91 0.49 -0.33 0.07 -0.94 1.61 1.65
## [784] 0.91 -0.48 -2.22 8.48 0.88 -1.04 -6.12 0.39 -3.1
## [793] -0.43 -0.1 0.56 2.04 3.68 1.65 2.03 -3.43 0.24
## [802] -0.69 1.95 -0.29 0.94 0.3 3.11 1.45 -1.41 1.22
## [811] 0.11 2.7 -0.98 -0.92 -2.01 -0.48 -1.73 1.35 2.83
## [820] -2.35 0.27 0.04 -2.65 -0.67 -0.71 -0.62 -2.2 2.93
## [829] 2.09 1.58 -2.06 -3.74 -1.17 0.56 -2.68 1.9 1.29
## [838] 4.93 3.06 -3.6 -3.84 2.31 -0.9 -4.45 -3.91 3.21
## [847] -1.83 -2.9 -0.38 -5.66 4.91 1.31 -2.8 7.3 2.61
## [856] -0.7 -4.95 -2.36 -1.15 0.01 -0.93 0.22 -3.73 -3.16
## [865] -5.13 -5.3 -0.14 -3.3 1.08 -0.34 0.38 -5.67 -3.92
## [874] 3.97 3.43 3.06 2.7 -1.21 3.35 -6.89 7.43 7.2
## [883] 5.05 22.14 -17.28 -7.71 -5.01 14.03 -2.79 -1.13 -1.39
## [892] -3.76 -2.79 0.97 6.57 -0.74 0.34 0.52 2.6 6.05
## [901] -4.36 2.49 -6.11 7.61 -0.43 4.57 1.19 -1.1 4.24
## [910] 5.94 -3.22 4.26 -5.3 -2.43 2.57 -2.91 2.84 0
## [919] 1.39 -0.36 0.9 0.55 4.7 1.66 5.35 2.69 0.77
## [928] 2.84 2.16 -3.07 2.76 -1.43 1.76 -2.1 -0.18 2.23
## [937] -3.79 -1.58 3.04 0.31 3.9 0.13 -1.52 -0.5 -1.41
## [946] -4 2.87 2.59 2.93 -0.92 -0.58 -1.21 0.91 -0.46
## [955] 5.42 -0.38 3.55 -1.34 -3.04 -0.35 -4.08 0.9 -1.37
## [964] 1.73 0.86 -1.1 0.1 1.32 -0.06 -2.06 0.03 0.77
## [973] -2.51 -0.13 -2.29 0.22 -2.63 0.2 -0.89 -0.23 0.94
## [982] -1.64 3.21 1.27 2.47 3.61 -1.13 -2.33 -2.99 3.59
## [991] -0.01 0.17 -0.09 4.83 -2.33 2.61 2.07 -0.9 2.45
## [1000] -4.22 -2.49 6.11 0.38 1.2 1.42 4.98 0.05 -1.97
## [1009] 0.16 -3 3.92 1.15 3.7 0.7 -2.47 1.52 2.6
## [1018] -0.34 -0.7 -0.18 -1.31 -3.06 -3.48 3.41 -0.17 -0.71
## [1027] 2.15 -1.75 -0.61 -0.52 0.02 0.77 -2.58 0.41 0.5
## [1036] -1.14 0.59 1.47 0.39 -0.45 0.79 -2.44 1.67 1.22
## [1045] 1.86 0.3 2.94 -1.49 1.24 -0.5 0.87 0.33 -1.89
## [1054] -4.25 -1.83 3.06 -4.23 0.37 -3.82 4.23 -2.06 2.54
## [1063] -0.57 0.53 3.05 -2.97 0.94 2.81 -4.15 0.49 -2.64
## [1072] -1.98 3.64 -2.81 -3.39 0.78 0.89 0.67 -0.26 0.65
## [1081] 2.64 1.17 2.01 -4.36 5.48 0.08 -1.05 -1.99 1.2
## [1090] 0.73 -2.54 2.15 -1.42 -1.71 4.53 -1.95 -0.63 -1.27
## [1099] -3.06 0.28 SMB -2.46 4.2 -30.8 -5.13
## [1108] 3.53 4.67 49.07 25.44 10.05 17.87 -14 9.35 5.85
## [1117] 0.79 -4.04 5.05 33.35 17.98 25.56 -3.79 -7.08 -9.14
## [1126] 3.93 0.93 -4.93 -6.66 -1.16 -2.18 -6.71 -1.17 -2.72
## [1135] 14.81 5.43 -2.78 0.16 -8.59 -5.82 -1.02 21.8 2.61
## [1144] 51.24 24.5 -13.98 -11.82 5.62 -11.94 -23.46 -0.52 15.24
## [1153] 14.59 22.93 14.43 21.71 5.58 7.21 8.7 13.8 -8.31
## [1162] 0.29 -9.5 -10.99 5.77 -12.53 -14.22 16.25 7.6 5.81
## [1171] -1.13 -9.1 -3.8 -6.82 -25.97 15.26 -1.36 18.05 4.7
## [1180] 26.71 4.87 -2.04 0.24 -7.19 3.21 9.22 13.8 -6
## [1189] -1.15 7.27 -8 -3.94 6.6 -4.84
## 742 Levels: -0.01 -0.03 -0.04 -0.06 -0.07 -0.08 -0.09 -0.1 -0.11 ... SMB
pairs(cbind(Mkt.RF,SMB,HML))
cor(fit$residuals)
## Mkt.RF SMB HML
## Mkt.RF 1.00000 0.1934 0.00884
## SMB 0.19337 1.0000 0.08313
## HML 0.00884 0.0831 1.00000
covRob(fit$residuals,cor=F)
## Call:
## covRob(data = fit$residuals, corr = F)
##
## Robust Estimate of Covariance:
## Mkt.RF SMB HML
## Mkt.RF 63495 14602 -1411
## SMB 14602 45913 3059
## HML -1411 3059 44231
##
## Robust Estimate of Location:
## Mkt.RF SMB HML
## 0.183 -2.329 -2.034
cor.test(fit$residuals[,1], fit$residuals[,2])
##
## Pearson's product-moment correlation
##
## data: fit$residuals[, 1] and fit$residuals[, 2]
## t = 7, df = 1000, p-value = 2e-11
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.138 0.247
## sample estimates:
## cor
## 0.193
cor.test(fit$residuals[,1], fit$residuals[,3])
##
## Pearson's product-moment correlation
##
## data: fit$residuals[, 1] and fit$residuals[, 3]
## t = 0.3, df = 1000, p-value = 0.8
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.0479 0.0655
## sample estimates:
## cor
## 0.00884
cor.test(fit$residuals[,2], fit$residuals[,3])
##
## Pearson's product-moment correlation
##
## data: fit$residuals[, 2] and fit$residuals[, 3]
## t = 3, df = 1000, p-value = 0.004
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.0266 0.1392
## sample estimates:
## cor
## 0.0831
pairs(fit$residuals)
n=dim(FF_data)[1]
sigF = as.matrix(var(cbind(Mkt.RF,SMB,HML)))
sigF
## Mkt.RF SMB HML
## Mkt.RF 62961 11879 904
## SMB 11879 44788 4442
## HML 904 4442 46197
bbeta = as.matrix(fit$coef)
bbeta = t( bbeta[-1,])
bbeta
## RF-0.01 RF-0.02 RF-0.03 RF-0.06 RF0 RF0.01 RF0.02 RF0.03 RF0.04
## Mkt.RF 325 406 132 91 424 491 444 483 493
## SMB 278 539 224 213 334 411 419 349 319
## HML 406 218 218 106 228 374 375 375 338
## RF0.05 RF0.06 RF0.07 RF0.08 RF0.09 RF0.1 RF0.11 RF0.12 RF0.13
## Mkt.RF 500 355 471 499 485 524 488 307 506
## SMB 471 279 420 239 338 320 330 302 323
## HML 401 335 363 365 260 340 310 230 346
## RF0.14 RF0.15 RF0.16 RF0.17 RF0.18 RF0.19 RF0.2 RF0.21 RF0.22
## Mkt.RF 361 481 333 433 430 419 465 350 460
## SMB 343 362 269 345 370 272 263 304 346
## HML 251 382 293 288 194 358 275 272 306
## RF0.23 RF0.24 RF0.25 RF0.26 RF0.27 RF0.28 RF0.29 RF0.3 RF0.31
## Mkt.RF 428 352 422 356 327 475 456 496 417
## SMB 397 288 279 271 307 334 250 313 305
## HML 351 322 340 261 358 386 269 385 315
## RF0.32 RF0.33 RF0.34 RF0.35 RF0.36 RF0.37 RF0.38 RF0.39 RF0.4
## Mkt.RF 476 480 271 325 332 354 352 475 385
## SMB 330 497 354 442 393 351 303 327 342
## HML 314 340 334 397 398 273 332 280 350
## RF0.41 RF0.42 RF0.43 RF0.44 RF0.45 RF0.46 RF0.47 RF0.48 RF0.49
## Mkt.RF 484 422 527 492 497 441 488 323 510
## SMB 401 329 341 353 425 336 309 255 408
## HML 265 313 301 259 417 351 397 440 266
## RF0.5 RF0.51 RF0.52 RF0.53 RF0.54 RF0.55 RF0.56 RF0.57 RF0.58
## Mkt.RF 526 253 470 441 523 433 443 359 321
## SMB 373 300 287 296 438 209 430 257 373
## HML 491 399 370 400 291 442 321 428 433
## RF0.59 RF0.6 RF0.61 RF0.62 RF0.63 RF0.64 RF0.65 RF0.66 RF0.67
## Mkt.RF 359 413 495 332 371 465 461 436 554
## SMB 462 283 377 301 581 419 240 229 232
## HML 404 389 315 377 342 275 288 273 278
## RF0.68 RF0.69 RF0.7 RF0.71 RF0.72 RF0.73 RF0.74 RF0.75 RF0.76
## Mkt.RF 357 427 459 385 47 203 352 395 254
## SMB 332 361 392 212 374 212 441 190 264
## HML 286 123 323 517 634 488 548 280 597
## RF0.77 RF0.78 RF0.79 RF0.8 RF0.81 RF0.82 RF0.83 RF0.86 RF0.87
## Mkt.RF 637 362 651 400 469 166 270 398 280
## SMB 546 413 363 369 408 299 23 281 355
## HML 387 275 64 425 444 440 116 645 278
## RF0.89 RF0.92 RF0.95 RF0.96 RF0.98 RF0.99 RF1 RF1.02 RF1.04 RF1.05
## Mkt.RF 60 296 458 476 98 769 42 688 275 205
## SMB 151 403 607 324 19 577 104 601 603 432
## HML 395 710 200 434 635 244 381 707 721 353
## RF1.06 RF1.07 RF1.08 RF1.1 RF1.13 RF1.15 RF1.2 RF1.21 RF1.24 RF1.26
## Mkt.RF 234 441 146 535 647 369 562 512 203 686
## SMB 401 247 669 649 484 512 561 504 204 441
## HML 492 366 550 290 223 38 667 256 370 438
## RF1.28 RF1.31 RF1.35 RF1.49 RF1.54 RF1.57 RF1.6 RF1.65 RF1.66
## Mkt.RF 325 259 158 536 755 612 238 192 513
## SMB 159 23 75 316 522 340 614 676 339
## HML 675 577 685 309 515 703 409 730 614
## RF1.82 RF10.38 RF10.54 RF11.24 RF14.71 RF2.13 RF2.41 RF2.46 RF2.66
## Mkt.RF 50 521 502 611 139 615 235 795 74
## SMB 98 594 735 698 722 375 320 99 227
## HML 322 113 516 236 597 722 172 135 296
## RF2.73 RF2.9 RF2.95 RF2.98 RF3.12 RF3.14 RF3.51 RF3.54 RF3.56
## Mkt.RF 123 856 871 633 579 124 809 518 694
## SMB 353 703 696 176 267 222 728 87 658
## HML 744 527 494 739 394 314 595 751 312
## RF3.83 RF3.84 RF3.9 RF3.93 RF4.21 RF4.39 RF4.66 RF4.68 RF4.75
## Mkt.RF 131 520 244 500 614 512 433 606 140
## SMB 528 167 95 595 707 699 345 524 287
## HML 529 486 58 723 333 169 177 273 512
## RF4.76 RF4.8 RF4.86 RF5.08 RF5.12 RF5.21 RF5.26 RF5.47 RF5.6 RF5.8
## Mkt.RF 127 501 537 610 345 695 617 228 656 691
## SMB 569 380 241 521 597 438 341 165 439 523
## HML 57 518 331 596 729 620 524 138 430 745
## RF5.89 RF6.16 RF6.35 RF6.52 RF6.58 RF6.93 RF7.18 RF7.72 RF7.81 RF8
## Mkt.RF 137 496 510 316 136 195 432 616 130 237
## SMB 116 356 702 166 169 240 520 384 171 48
## HML 647 746 519 593 335 525 364 464 335 748
## RF8.37 RF8.8 RF9.85 RFRF
## Mkt.RF 605 525 306 873
## SMB 168 517 351 741
## HML 275 591 530 752
resig2 = apply((fit$resid)^2, 2, sum)/(n-3-1)
resig2 = diag(resig2)