'question 1'
## [1] "question 1"
library(plyr)
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
tickers<-c("SPY", "QQQ", "EEM", "IWM", "EFA", "TLT", "IYR", "GLD")
data.env<-new.env()
l_ply(tickers, function(sym) try(getSymbols(sym, from="2010-01-01", env=data.env), silent=T))
## 'getSymbols' currently uses auto.assign=TRUE by default, but will
## use auto.assign=FALSE in 0.5-0. You will still be able to use
## 'loadSymbols' to automatically load data. getOption("getSymbols.env")
## and getOption("getSymbols.auto.assign") will still be checked for
## alternate defaults.
##
## This message is shown once per session and may be disabled by setting
## options("getSymbols.warning4.0"=FALSE). See ?getSymbols for details.
stocks<- tickers[tickers %in% ls(data.env)]
data<- xts()
for(i in seq_along(stocks)){
symbol<-stocks[i]
data <- merge(data, Ad(get(symbol, envir=data.env)))
}
data<- xts(coredata(data), order.by = as.Date(index(data), tz=""))
head(data)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## 2010-01-04 94.13087 42.07555 35.67281 56.09659
## 2010-01-05 94.38007 42.07555 35.93174 55.90370
## 2010-01-06 94.44649 41.82175 36.00691 55.85109
## 2010-01-07 94.84521 41.84896 35.79811 56.26318
## 2010-01-08 95.16080 42.19340 36.08208 56.57005
## 2010-01-11 95.29370 42.02117 36.00691 56.34210
## EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 2010-01-04 43.40944 68.49980 32.26275 109.80
## 2010-01-05 43.44770 68.94214 32.34021 109.70
## 2010-01-06 43.63134 68.01926 32.32613 111.51
## 2010-01-07 43.46300 68.13365 32.61488 110.82
## 2010-01-08 43.80734 68.10319 32.39655 111.37
## 2010-01-11 44.16698 67.72945 32.55150 112.85
'question 2'
## [1] "question 2"
library(fBasics)
## Loading required package: timeDate
## Loading required package: timeSeries
##
## Attaching package: 'timeSeries'
## The following object is masked from 'package:zoo':
##
## time<-
##
## Attaching package: 'fBasics'
## The following object is masked from 'package:TTR':
##
## volatility
sigma=cov(data)
std=sqrt(diag(sigma))
ones=rep(1,8)
one.vec=matrix(ones, ncol=1)
a=inv(sigma)%*%one.vec
b=t(one.vec)%*%a
mvp.w=a/as.numeric(b)
mvp.w
## [,1]
## SPY.Adjusted -0.49371905
## QQQ.Adjusted 0.37573497
## EEM.Adjusted 0.13361155
## IWM.Adjusted 0.06340693
## EFA.Adjusted 0.48794386
## TLT.Adjusted 0.07288760
## IYR.Adjusted 0.41012486
## GLD.Adjusted -0.04999072
mvp.ret<-sum((mvp.w)*colMeans(data))
mvp.ret
## [1] 12.65134
print(cov(data))
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## SPY.Adjusted 3401.8926 2410.33475 125.942580 1846.05711
## QQQ.Adjusted 2410.3347 1731.70895 93.643142 1302.09670
## EEM.Adjusted 125.9426 93.64314 17.678257 73.43056
## IWM.Adjusted 1846.0571 1302.09670 73.430564 1019.96660
## EFA.Adjusted 473.8619 329.10445 23.997672 265.45829
## TLT.Adjusted 773.1779 537.76152 10.908745 403.03137
## IYR.Adjusted 797.9245 556.76620 24.078669 429.45478
## GLD.Adjusted -551.9669 -370.66045 0.792119 -300.74451
## EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## SPY.Adjusted 473.86193 773.17793 797.92447 -551.966916
## QQQ.Adjusted 329.10445 537.76152 556.76620 -370.660454
## EEM.Adjusted 23.99767 10.90874 24.07867 0.792119
## IWM.Adjusted 265.45829 403.03137 429.45478 -300.744511
## EFA.Adjusted 76.31504 93.83577 108.23969 -83.109688
## TLT.Adjusted 93.83577 268.21760 209.17469 -78.081570
## IYR.Adjusted 108.23969 209.17469 201.51089 -119.296035
## GLD.Adjusted -83.10969 -78.08157 -119.29604 335.055396
print(std)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 58.325745 41.613807 4.204552 31.936916 8.735848
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 16.377350 14.195453 18.304518
'question 3'
## [1] "question 3"
data.weekly<-data[endpoints(data, on="weeks", k=1),]
library(fBasics)
sigma=cov(data.weekly)
std=sqrt(diag(sigma))
ones=rep(1,8)
one.vec=matrix(ones, ncol=1)
a=inv(sigma)%*%one.vec
b=t(one.vec)%*%a
mvp.w=a/as.numeric(b)
mvp.w
## [,1]
## SPY.Adjusted -0.49237335
## QQQ.Adjusted 0.37049779
## EEM.Adjusted 0.14678672
## IWM.Adjusted 0.06909011
## EFA.Adjusted 0.47167656
## TLT.Adjusted 0.07559435
## IYR.Adjusted 0.41061688
## GLD.Adjusted -0.05188906
mvp.ret<-sum((mvp.w)*colMeans(data.weekly))
mvp.ret
## [1] 12.65396
print(cov(data.weekly))
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## SPY.Adjusted 3417.0088 2421.70264 127.46711 1852.71568
## QQQ.Adjusted 2421.7026 1740.31457 94.78025 1306.99096
## EEM.Adjusted 127.4671 94.78025 17.97815 74.16916
## IWM.Adjusted 1852.7157 1306.99096 74.16916 1022.84958
## EFA.Adjusted 475.4664 330.34008 24.35280 266.19307
## TLT.Adjusted 775.6326 539.56888 11.16196 404.06460
## IYR.Adjusted 801.7817 559.78527 24.47288 431.23153
## GLD.Adjusted -555.3025 -373.34353 1.00087 -302.70342
## EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## SPY.Adjusted 475.46638 775.63261 801.78169 -555.30253
## QQQ.Adjusted 330.34008 539.56888 559.78527 -373.34353
## EEM.Adjusted 24.35280 11.16196 24.47288 1.00087
## IWM.Adjusted 266.19307 404.06460 431.23153 -302.70342
## EFA.Adjusted 76.61208 94.21768 108.67338 -83.14663
## TLT.Adjusted 94.21768 267.84553 209.66999 -79.01053
## IYR.Adjusted 108.67338 209.66999 202.39557 -119.87612
## GLD.Adjusted -83.14663 -79.01053 -119.87612 336.61902
print(std)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 58.455186 41.717078 4.240065 31.982020 8.752833
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 16.365987 14.226580 18.347180
'question 4'
## [1] "question 4"
data.monthly<- data[endpoints(data, on="months", k=1),]
library(fBasics)
sigma=cov(data.monthly)
std=sqrt(diag(sigma))
ones=rep(1,8)
one.vec=matrix(ones, ncol=1)
a=inv(sigma)%*%one.vec
b=t(one.vec)%*%a
mvp.w=a/as.numeric(b)
mvp.w
## [,1]
## SPY.Adjusted -0.48934914
## QQQ.Adjusted 0.36662497
## EEM.Adjusted 0.17000927
## IWM.Adjusted 0.06653477
## EFA.Adjusted 0.45576386
## TLT.Adjusted 0.07708740
## IYR.Adjusted 0.41304768
## GLD.Adjusted -0.05971881
mvp.ret<-sum((mvp.w)*colMeans(data.monthly))
mvp.ret
## [1] 11.99433
print(cov(data.monthly))
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted
## SPY.Adjusted 3502.2075 2492.08504 133.688104 1883.24318
## QQQ.Adjusted 2492.0850 1797.33514 99.670951 1333.01922
## EEM.Adjusted 133.6881 99.67095 18.309770 76.58382
## IWM.Adjusted 1883.2432 1333.01922 76.583824 1031.44500
## EFA.Adjusted 485.9953 339.04825 25.023709 269.83824
## TLT.Adjusted 781.3176 545.27807 12.056095 404.84961
## IYR.Adjusted 820.5909 575.83181 26.037710 438.22649
## GLD.Adjusted -564.2669 -381.21491 2.713118 -305.69449
## EFA.Adjusted TLT.Adjusted IYR.Adjusted GLD.Adjusted
## SPY.Adjusted 485.99532 781.31764 820.59085 -564.266873
## QQQ.Adjusted 339.04825 545.27807 575.83181 -381.214908
## EEM.Adjusted 25.02371 12.05610 26.03771 2.713118
## IWM.Adjusted 269.83824 404.84961 438.22649 -305.694491
## EFA.Adjusted 77.85999 95.12721 110.91904 -82.608933
## TLT.Adjusted 95.12721 266.66468 210.33454 -82.138261
## IYR.Adjusted 110.91904 210.33454 206.12464 -120.697396
## GLD.Adjusted -82.60893 -82.13826 -120.69740 341.428281
print(std)
## SPY.Adjusted QQQ.Adjusted EEM.Adjusted IWM.Adjusted EFA.Adjusted
## 59.179452 42.394990 4.278992 32.116117 8.823831
## TLT.Adjusted IYR.Adjusted GLD.Adjusted
## 16.329871 14.357042 18.477778
'question 5'
## [1] "question 5"
options(digits=5)
firm_data1 = read.csv("~/F-F_Research_Data_Factors.CSV")
head(firm_data1)
## X Mkt.RF SMB HML RF
## 1 192607 2.96 -2.30 -2.87 0.22
## 2 192608 2.64 -1.40 4.19 0.25
## 3 192609 0.36 -1.32 0.01 0.23
## 4 192610 -3.24 0.04 0.51 0.32
## 5 192611 2.53 -0.20 -0.35 0.31
## 6 192612 2.62 -0.04 -0.02 0.28
names(firm_data1)
## [1] "X" "Mkt.RF" "SMB" "HML" "RF"
attach(firm_data1)
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
stocks5=cbind(N=Mkt.RF,SMB,HML)
fit = lm(cbind(Mkt.RF,SMB,HML)~RF)
options(digits=3)
SMB
## [1] -2.30 -1.40 -1.32 0.04 -0.20 -0.04 -0.56 -0.10 -1.60
## [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.50 -1.35 -2.07 2.18
## [28] 2.27 -1.81 -0.85 -3.54 -0.39 -4.78 -0.99 -5.46 -2.17
## [37] -3.88 -9.52 1.17 -4.08 -1.91 -4.20 3.58 0.12 3.44
## [46] -0.17 -2.04 -3.22 -0.37 -2.22 -2.22 -0.10 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.30 -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.90
## [82] 4.56 36.70 8.67 -1.01 -5.45 -0.32 -0.08 -6.48 0.66
## [91] 12.53 5.19 2.51 2.80 -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.30 0.22 5.10 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.80 -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.00 -1.57 0.10 -1.69 -0.66 1.32
## [181] 5.70 -0.41 -0.99 -2.02 -1.21 -2.98 7.52 1.72 1.78
## [190] -0.60 -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.10 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.10 -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.40 0.06 2.18 0.68 -1.61 -3.97 -3.26 -0.31
## [253] 1.43 0.30 1.64 0.51 -1.74 -2.48 2.49 -1.71 0.13
## [262] -1.66 0.93 -1.86 -0.32 -1.10 -1.23 -1.50 -0.62 -2.80
## [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.90 -0.22 -0.29 -2.25
## [307] -0.61 0.79 -2.99 0.48 -1.01 -1.61 -0.40 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.30
## [352] 1.50 -2.46 2.08 0.44 -1.04 -2.42 0.07 1.50 -1.46
## [361] -1.68 1.90 1.56 -0.09 -0.22 -0.03 3.40 -0.72 0.27
## [370] -1.60 -1.07 0.55 -0.76 0.06 0.08 -2.52 0.40 -0.93
## [379] 4.36 0.70 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.60 2.09 0.51 -0.51
## [406] 0.31 1.21 -0.22 -0.52 0.90 -1.11 -3.95 0.35 -1.56
## [415] 0.66 3.98 3.27 0.10 1.95 -2.47 -1.88 -1.75 -1.05
## [424] -1.61 1.24 -0.83 1.78 -1.16 0.53 -0.68 -3.33 -0.57
## [433] 1.49 1.23 -2.43 -3.97 2.61 -3.80 3.06 0.50 -2.62
## [442] -1.31 1.12 -0.25 -0.56 -0.94 -0.31 -0.54 -1.13 -1.97
## [451] -0.19 0.10 0.99 -1.37 -0.90 -0.26 0.28 0.09 -0.51
## [460] 0.43 0.61 -0.26 2.70 3.48 1.79 1.20 0.04 -4.35
## [469] 0.87 2.81 0.61 2.48 4.68 2.08 3.89 4.54 0.94
## [478] 3.45 -4.70 1.02 -0.44 -3.23 -1.07 -6.64 4.22 1.86
## [487] 8.32 3.34 1.63 0.62 1.98 5.96 3.08 0.47 3.10
## [496] 1.42 0.20 5.73 3.91 -2.95 -1.28 5.73 6.43 -0.17
## [505] -1.30 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.20 3.81 -2.53 -3.67
## [523] 2.90 -2.40 -2.32 -6.11 -4.52 -2.16 -0.54 1.52 8.62
## [532] -4.28 -4.07 2.97 7.37 1.88 2.54 -0.49 -1.10 -1.42
## [541] -1.50 -0.16 0.41 -1.80 -2.85 3.32 6.12 1.37 -0.27
## [550] 0.01 -2.79 0.33 -2.89 -4.09 -2.67 -2.74 -1.11 -1.86
## [559] -3.48 -3.99 -2.82 -3.99 -6.12 -2.95 7.91 -2.03 2.94
## [568] -0.23 -7.70 -5.29 9.76 0.05 2.51 -0.71 -3.01 -0.20
## [577] 0.92 -0.68 0.27 -3.51 -1.17 -4.84 11.01 0.16 3.75
## [586] -0.54 3.83 0.76 2.69 -3.20 -0.13 -4.02 -1.19 -0.76
## [595] 4.80 7.03 -1.17 -0.03 -1.24 -1.35 0.31 -2.01 -0.01
## [604] 0.25 2.32 3.01 4.78 1.08 0.99 -0.12 1.18 2.13
## [613] 2.12 1.52 1.45 1.27 3.72 1.35 2.22 3.59 3.48
## [622] 0.40 4.56 1.69 0.26 5.06 -0.39 -9.88 3.01 1.24
## [631] 3.66 0.45 3.19 2.18 0.57 1.17 1.26 2.08 -0.25
## [640] -3.34 2.74 4.17 1.65 -1.82 -6.64 0.97 2.16 1.67
## [649] 4.25 3.92 0.89 2.47 -3.45 -0.28 3.00 -0.31 3.58
## [658] 4.42 2.00 -0.85 -2.18 -1.95 -2.66 2.13 -0.96 1.17
## [667] -1.29 0.49 -0.19 1.51 0.47 -0.40 0.84 -4.11 2.88
## [676] 2.35 4.77 -0.18 2.70 3.23 1.77 0.53 6.16 0.91
## [685] 1.46 -4.30 0.56 -3.60 2.04 -0.29 -0.43 -1.71 0.07
## [694] -1.20 0.03 -0.32 -2.21 -0.25 0.20 -1.20 -0.62 -0.60
## [703] 3.27 0.76 -1.15 0.14 -2.25 0.65 2.85 -0.34 -1.58
## [712] -1.57 0.23 -0.49 1.22 -0.65 -0.52 2.84 -1.32 -0.91
## [721] -3.38 -4.17 2.28 -2.48 -1.92 0.08 -1.81 3.49 0.37
## [730] -1.69 -0.53 -2.18 -0.67 -0.72 0.52 -8.43 2.77 0.13
## [739] -0.77 3.36 6.16 0.96 -2.64 2.16 -0.21 0.04 -1.25
## [748] -2.90 -1.74 1.95 -2.14 2.76 0.74 -0.59 -0.04 -1.01
## [757] -4.02 0.50 0.28 -3.30 -1.24 -2.41 -1.29 1.03 1.52
## [766] -0.50 -2.57 1.43 -3.21 -3.58 -3.67 -5.51 0.33 0.79
## [775] 3.79 3.95 3.89 0.50 -0.34 0.07 -0.93 1.59 1.63
## [784] 0.90 -0.48 -2.24 8.47 0.88 -1.03 -6.12 0.39 -3.09
## [793] -0.44 -0.12 0.56 2.05 3.70 1.64 2.03 -3.43 0.23
## [802] -0.70 1.96 -0.31 0.93 0.32 3.11 1.45 -1.43 1.22
## [811] 0.14 2.73 -0.98 -0.93 -2.02 -0.45 -1.73 1.34 2.82
## [820] -2.34 0.27 0.04 -2.65 -0.67 -0.70 -0.62 -2.20 2.93
## [829] 2.09 1.60 -2.10 -3.74 -1.17 0.57 -2.62 1.88 1.30
## [838] 4.92 3.04 -3.58 -3.83 2.30 -0.88 -4.44 -3.89 3.20
## [847] -1.84 -2.90 -0.38 -5.66 4.89 1.32 -2.80 7.31 2.61
## [856] -0.68 -4.94 -2.35 -1.15 0.00 -0.94 0.21 -3.75 -3.16
## [865] -5.12 -5.30 -0.12 -3.32 1.07 -0.33 0.39 -5.68 -3.94
## [874] 3.99 3.42 3.06 2.66 -1.27 3.33 -6.94 7.38 7.15
## [883] 4.95 21.71 -16.87 -7.75 -5.11 13.86 -2.79 -1.13 -1.39
## [892] -3.76 -2.79 0.97 6.57 -0.74 0.34 0.52 2.60 6.05
## [901] -4.35 2.49 -6.13 7.63 -0.41 4.57 1.19 -1.10 4.23
## [910] 5.94 -3.21 4.26 -5.30 -2.44 2.57 -2.90 2.84 0.00
## [919] 1.39 -0.34 0.89 0.57 4.70 1.67 5.25 2.60 0.79
## [928] 2.68 2.01 -3.01 2.80 -1.43 1.75 -2.06 -0.21 2.26
## [937] -3.80 -1.63 3.03 0.31 3.91 0.12 -1.51 -0.51 -1.39
## [946] -3.99 2.89 2.62 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.90 -1.37
## [964] 1.73 0.86 -1.10 0.10 1.32 -0.06 -2.06 0.03 0.77
## [973] -2.51 -0.13 -2.29 0.22 -2.63 0.20 -0.89 -0.23 0.94
## [982] -1.64 3.22 1.27 2.47 3.61 -1.13 -2.34 -2.99 3.59
## [991] -0.01 0.16 -0.08 4.83 -2.33 2.61 2.07 -0.90 2.45
## [1000] -4.23 -2.49 6.11 0.38 1.21 1.43 4.98 0.05 -1.98
## [1009] 0.17 -3.00 3.92 1.14 3.71 0.69 -2.46 1.52 2.60
## [1018] -0.35 -0.71 -0.17 -1.30 -3.06 -3.49 3.41 -0.17 -0.71
## [1027] 2.15 -1.75 -0.60 -0.51 0.02 0.77 -2.59 0.42 0.51
## [1036] -1.14 0.58 1.47 0.39 -0.45 0.78 -2.42 1.67 1.22
## [1045] 1.86 0.30 2.93 -1.49 1.24 -0.50 0.86 0.32 -1.89
## [1054] -4.25 -1.85 3.07 -4.24 0.36 -3.83 4.23 -2.09 2.54
## [1063] -0.56 0.48 3.02 -2.97 0.87 2.83 -4.14 0.48 -2.64
## [1072] -1.97 3.64 -2.82 -3.36 0.78 0.87 0.68 -0.26 0.65
## [1081] 2.65 1.14 2.01 -4.36 5.51 0.05 -1.01 -2.00 1.19
## [1090] 0.73 -2.54 2.15 -1.40 -1.69 4.52 -1.94 -0.66 -1.26
## [1099] -3.03 0.28 3.93 1.10 5.24 1.17 -2.17 1.27 -2.35
## [1108] -4.69 -0.78 -2.58 3.02 2.03
pairs(cbind(Mkt.RF,SMB,HML))

cor(fit$residuals)
## Mkt.RF SMB HML
## Mkt.RF 1.000 0.318 0.237
## SMB 0.318 1.000 0.125
## HML 0.237 0.125 1.000
covRob(fit$residuals,cor=F)
## Call:
## covRob(data = fit$residuals, corr = F)
##
## Robust Estimate of Covariance:
## Mkt.RF SMB HML
## Mkt.RF 14.732 2.147 -0.155
## SMB 2.147 5.976 -0.188
## HML -0.155 -0.188 5.052
##
## Robust Estimate of Location:
## Mkt.RF SMB HML
## 0.3022 -0.0613 -0.2316
cor.test(fit$residuals[,1], fit$residuals[,2])
##
## Pearson's product-moment correlation
##
## data: fit$residuals[, 1] and fit$residuals[, 2]
## t = 10, df = 1000, p-value <2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.264 0.370
## sample estimates:
## cor
## 0.318
cor.test(fit$residuals[,1], fit$residuals[,3])
##
## Pearson's product-moment correlation
##
## data: fit$residuals[, 1] and fit$residuals[, 3]
## t = 8, df = 1000, p-value = 1e-15
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.181 0.292
## sample estimates:
## cor
## 0.237
cor.test(fit$residuals[,2], fit$residuals[,3])
##
## Pearson's product-moment correlation
##
## data: fit$residuals[, 2] and fit$residuals[, 3]
## t = 4, df = 1000, p-value = 3e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.0672 0.1829
## sample estimates:
## cor
## 0.125
pairs(fit$residuals)

n=dim(firm_data1)[1]
sigF = as.matrix(var(cbind(Mkt.RF,SMB,HML)))
sigF
## Mkt.RF SMB HML
## Mkt.RF 28.46 5.45 4.36
## SMB 5.45 10.17 1.38
## HML 4.36 1.38 12.11
bbeta = as.matrix(fit$coef)
bbeta = t( bbeta[-1,])
bbeta
## Mkt.RF SMB HML
## [1,] -1.38 -0.641 0.353
resig2 = apply((fit$resid)^2, 2, sum)/(n-3-1)
resig2 = diag(resig2)
cov_ff3 = sigF
cov_ff3
## Mkt.RF SMB HML
## Mkt.RF 28.46 5.45 4.36
## SMB 5.45 10.17 1.38
## HML 4.36 1.38 12.11
cov2cor(cov_ff3)
## Mkt.RF SMB HML
## Mkt.RF 1.000 0.320 0.235
## SMB 0.320 1.000 0.124
## HML 0.235 0.124 1.000
cov_hist = cov(stocks5)
cov2cor(cov_hist)
## N SMB HML
## N 1.000 0.320 0.235
## SMB 0.320 1.000 0.124
## HML 0.235 0.124 1.000
one.vec=rep(1,3)
a = solve(cov_ff3)%*%one.vec
b = t(one.vec)%*%a
mvp.w =a / as.numeric(b)
mvp.w
## [,1]
## Mkt.RF 0.0507
## SMB 0.5188
## HML 0.4305
a1 = solve(cov_hist)%*%one.vec
b1 = t(one.vec)%*%a1
mvp.w1 =a1 / as.numeric(b1)
mvp.w1
## [,1]
## N 0.0507
## SMB 0.5188
## HML 0.4305