rm(list=ls())
library(fBasics)
## Loading required package: timeDate
## Loading required package: timeSeries
library(tidyverse)
## -- Attaching packages ------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0 v purrr 0.3.3
## v tibble 2.1.3 v dplyr 0.8.3
## v tidyr 1.0.0 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## -- Conflicts ---------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks timeSeries::filter(), stats::filter()
## x dplyr::lag() masks timeSeries::lag(), stats::lag()
library(csv)
retdata = read.csv('m-fac9003.csv')
t = dim(retdata)[1]
market = retdata[,14]
str(retdata)
## 'data.frame': 168 obs. of 14 variables:
## $ AA : num -16.4 4.04 0.12 -4.28 5.81 ...
## $ AGE : num -12.17 4.95 13.08 -11.06 19.7 ...
## $ CAT : num -4.44 8.84 0.17 0.25 8.52 ...
## $ F : num -0.06 6.02 2.06 -5.67 3.89 ...
## $ FDX : num -2.28 10.47 10.84 -2.44 -16.17 ...
## $ GM : num -2.12 8.97 1.57 -4.19 10.94 ...
## $ HPQ : num -6.19 -4.01 5.67 -5.29 8.81 ...
## $ KMB : num -11.01 -5.2 3.21 -0.65 8.83 ...
## $ MEL : num -10.77 0.34 -0.17 -2.2 11.85 ...
## $ NYT : num -6.3 -4.62 -0.66 -10.6 11.59 ...
## $ PG : num -8.89 -0.84 5.41 4.26 16.35 ...
## $ TRB : num -13.04 -0.37 2.36 -7.98 8.82 ...
## $ TXN : num -7.61 4.97 2.69 -6.85 22.88 ...
## $ SP500: num -7.52 0.21 1.77 -3.34 8.55 ...
retdata$date
## NULL
riskfree = retdata[,12]
retdata1 = retdata[,c(-14, -12)]
retdata1 = as.matrix(retdata1)
n = dim(retdata1)[2]
ones = rep(1,t)
X = cbind(ones,market)
b_hat = solve(t(X)%*%X)%*%t(X)%*%retdata1
E_hat = retdata1 - X%*%b_hat
diagD_hat = diag(t(E_hat)%*%E_hat)/(t-2)
retvar = apply(retdata1,2,var)
R_2 = 1 - diag(t(E_hat)%*%E_hat)/((t-1)*retvar)
res_std = sqrt(diagD_hat)
cov_factor = var(market)*t(b_hat)%*%b_hat + diag(diagD_hat) ;
sd = sqrt(diag(cov_factor)) ;
cor_factor = cov_factor/(sd%*%t(sd));
cov_sample = cov(retdata1);
cor_sample = cor(retdata1);
one.vec = rep(1,12)
a = solve(cov_factor)%*%one.vec
b = t(one.vec)%*%a
mvp.w = a/as.numeric(b)
mvp.w
## [,1]
## AA 0.04412460
## AGE -0.02676160
## CAT 0.06481505
## F 0.06427293
## FDX 0.07424653
## GM 0.13385950
## HPQ -0.02875738
## KMB 0.30455158
## MEL 0.03522196
## NYT 0.21197141
## PG 0.21228558
## TXN -0.08983016