Beruflich Dokumente
Kultur Dokumente
Exercise 1
source("/Users/air/Desktop/C183/hw3code.R")
set.seed(704115065)
myticker <- sample(ticker, 600)
market <- "^GSPC"
market1 <- qq(market,start = "2001-12-31",end = "2006-12-31");market1R<-market1$R
market2 <- qq(market,start = "2006-12-31",end = "2011-12-31");market2R<-market2$R
market3 <- qq(market,start = "2011-12-31",end = "2016-12-31");market3R<-market3$R
(a)
source("/Users/air/Desktop/C183/hw3code.R")
data1 <- qq(myticker,start = "2001-12-31",end = "2006-12-31");beta1 <- rep(0,600)
data2 <- qq(myticker,start = "2006-12-31",end = "2011-12-31");beta2 <- rep(0,600)
data3 <- qq(myticker,start = "2011-12-31",end = "2016-12-31");beta3 <- rep(0,600)
R1 <- data1$R
R2 <- data2$R
R3 <- data3$R
(b)
(c)
#individual stock
period1eachstockMSE <- (1/600) * sum((beta2-beta1)^2);period1eachstockMSE
## [1] 1.005759
period2eachstockMSE <- (1/600) * sum((beta3-beta2)^2);period2eachstockMSE
## [1] 0.5460285
(mean(beta2) - mean(beta1))^2
## [1] 0.07274149
1
(1-lm(beta2~beta1)$coefficients[2])^2 * (sum((beta1 - mean(beta1))^2)/600)
## beta1
## 0.4520105
(1-summary(lm(beta2~beta1))$r.squared) * (sum((beta2 - mean(beta2))^2)/600)
## [1] 0.4810075
(mean(beta3) - mean(beta2))^2
## [1] 0.01711806
(1-lm(beta3~beta2)$coefficients[2])^2 * (sum((beta2 - mean(beta2))^2)/600)
## beta2
## 0.2224886
(1-summary(lm(beta3~beta2))$r.squared) * (sum((beta3 - mean(beta3))^2)/600)
## [1] 0.3064218
#equal weight portfolio of 5 stocks
betatable <- cbind(beta1,beta2,beta3)
## [1] 0.6467624
(mean(beta2portfolio5) - mean(beta1portfolio5))^2
## [1] 0.07274149
(1-lm(beta2portfolio5~beta1portfolio5)$coefficients[2])^2 *
(sum((beta1portfolio5 - mean(beta1portfolio5))^2)/120)
## beta1portfolio5
## 0.4529662
(1-summary(lm(beta2portfolio5~beta1portfolio5))$r.squared) *
(sum((beta2portfolio5 - mean(beta2portfolio5))^2)/120)
## [1] 0.1210547
newtable2 <- betatable[order(-betatable[,2]),]
for(i in 1:120){
beta2portfolio5[i] <- sum(newtable2[(5*i-4):(5*i),2]/5)
beta3portfolio5[i] <- sum(newtable2[(5*i-4):(5*i),3]/5)
}
period2MSE5 <- (1/120) * sum((beta3portfolio5-beta2portfolio5)^2);period2MSE5
## [1] 0.294833
2
(mean(beta3portfolio5) - mean(beta2portfolio5))^2
## [1] 0.01711806
(1-lm(beta3portfolio5~beta2portfolio5)$coefficients[2])^2 *
(sum((beta2portfolio5 - mean(beta2portfolio5))^2)/120)
## beta2portfolio5
## 0.2214306
(1-summary(lm(beta3portfolio5~beta2portfolio5))$r.squared) *
(sum((beta3portfolio5 - mean(beta3portfolio5))^2)/120)
## [1] 0.05628427
#equal weight of portfolio of 10 stocks
beta1portfolio10 <- rep(0,60)
beta2portfolio10 <- rep(0,60)
beta3portfolio10 <- rep(0,60)
## [1] 0.5966137
(mean(beta2portfolio10) - mean(beta1portfolio10))^2
## [1] 0.07274149
(1-lm(beta2portfolio10~beta1portfolio10)$coefficients[2])^2 *
(sum((beta1portfolio10 - mean(beta1portfolio10))^2)/60)
## beta1portfolio10
## 0.4507542
(1-summary(lm(beta2portfolio10~beta1portfolio10))$r.squared) *
(sum((beta2portfolio10 - mean(beta2portfolio10))^2)/60)
## [1] 0.07311798
newtable2 <- betatable[order(-betatable[,2]),]
for(i in 1:60){
beta2portfolio10[i] <- sum(newtable2[(10*i-9):(10*i),2]/10)
beta3portfolio10[i] <- sum(newtable2[(10*i-9):(10*i),3]/10)
}
period2MSE10 <- (1/60) * sum((beta3portfolio10-beta2portfolio10)^2);period2MSE10
## [1] 0.2598748
(mean(beta3portfolio10) - mean(beta2portfolio10))^2
## [1] 0.01711806
(1-lm(beta3portfolio10~beta2portfolio10)$coefficients[2])^2 *
(sum((beta2portfolio10 - mean(beta2portfolio10))^2)/60)
3
## beta2portfolio10
## 0.2207386
(1-summary(lm(beta3portfolio10~beta2portfolio10))$r.squared) *
(sum((beta3portfolio10 - mean(beta3portfolio10))^2)/60)
## [1] 0.02201814
(d)
Exercise 2
source("/Users/air/Desktop/C183/hw3code.R")
ticker <- c("PEGA", "OME", "NWLI", "PLT", "UFCS", "TRC","CSFL", "UIS", "DGAS", "IBOC", "ANIK",
"SPTN","LTC", "CACI", "HRG", "^GSPC")
gr <- qq(ticker, start='2012-01-01', end='2017-04-30')
sm1SIM <-stockModel(gr, model="SIM",index=16,Rf = 0.001)
sm2SIM <-stockModel(gr, model="SIM",index=16,Rf = 0.001,shortSelling = FALSE)
op1SIM <- optimalPort(sm1SIM)
op2SIM <- optimalPort(sm2SIM)
op1SIM
4
## ANIK SPTN LTC CACI HRG
## 0.105276615 0.069821867 0.206230563 -0.003656691 0.103738151
op2SIM
0.01
0.00
Risk
5
op1CCM
6
Risk and Return of Stocks
0.01
0.00
Risk
rf <- 0.001
data<-as.data.frame(gr$R)
#Perform regression of each stock on the index and record alpha, beta, #sigma_e^2:
for(i in 1:15){
alpha[i] <- lm(data=data,formula=data[,i] ~ data[,16])$coefficients[1]
beta[i] <- lm(data=data,formula=data[,i] ~ data[,16])$coefficients[2]
Rbar[i] <- alpha[i]+beta[i]*mean(data[,16])
mse[i] <- sum(lm(data=data, formula=data[,i] ~ data[,16])$residuals^2)/(nrow(data)-2)
Ratio[i] <- (Rbar[i]-rf)/beta[i]
stock[i] <- i
7
}
8
## [6,] 0.0178717907 2.6934212 13.9264247 150.707964 604.079105
## [7,] 0.0167600314 4.5531201 18.4795448 271.665368 875.744473
## [8,] 0.0160495113 1.8807027 20.3602475 117.181307 992.925780
## [9,] 0.0146826105 3.6430515 24.0032991 248.120150 1241.045931
## [10,] 0.0098344003 4.6708566 28.6741557 474.950834 1715.996765
## [11,] 0.0096946537 6.1725712 34.8467269 636.698473 2352.695238
## [12,] 0.0074115447 4.7337936 39.5805205 638.705397 2991.400635
## [13,] 0.0055563036 4.5572216 44.1377421 820.189444 3811.590079
## [14,] -0.0007529571 -0.3823640 43.7553781 507.816444 4319.406523
## [15,] -0.0009244649 -0.2249894 43.5303887 243.372597 4562.779120
## col5 z_short x_short
## [1,] 0.0002858663 0.9907597 0.05788815
## [2,] 0.0009932098 2.3471034 0.13713665
## [3,] 0.0016413139 3.1026939 0.18128433
## [4,] 0.0047072516 4.6709246 0.27291297
## [5,] 0.0068650609 1.6647151 0.09726604
## [6,] 0.0077933398 2.2598276 0.13203730
## [7,] 0.0089766215 1.6535579 0.09661415
## [8,] 0.0093575416 1.1196488 0.06541889
## [9,] 0.0099026300 1.1823175 0.06908050
## [10,] 0.0098914513 0.9507076 0.05554798
## [11,] 0.0098560113 1.3136215 0.07675233
## [12,] 0.0094819848 0.1795320 0.01048970
## [13,] 0.0088373121 -0.7087752 -0.04141235
## [14,] 0.0079522089 -2.6406908 -0.15429039
## [15,] 0.0075762143 -0.9708737 -0.05672625
#SHORT SALES NOT ALLOWED:
#First create a matrix up to the maximum of col5:
table1 <- cbind(aaa, col1, col2, col3, col4, col5)
table2 <- table1[1:which(col5==max(col5)), ]
9
## [3,] 0.8067441 2.0021162 16.280968 36.939531 0.0016413139 2.8819053
## [4,] 4.4408140 6.4429302 148.899094 185.838625 0.0047072516 4.0529492
## [5,] 4.7900733 11.2330035 267.532517 453.371142 0.0068650609 1.2066644
## [6,] 2.6934212 13.9264247 150.707964 604.079105 0.0077933398 1.6361744
## [7,] 4.5531201 18.4795448 271.665368 875.744473 0.0089766215 1.1459468
## [8,] 1.8807027 20.3602475 117.181307 992.925780 0.0093575416 0.7493479
## [9,] 3.6430515 24.0032991 248.120150 1241.045931 0.0099026300 0.7229189
## x_no_short
## [1,] 0.06077539
## [2,] 0.14130516
## [3,] 0.18550707
## [4,] 0.26088668
## [5,] 0.07767249
## [6,] 0.10531987
## [7,] 0.07376413
## [8,] 0.04823521
## [9,] 0.04653400
Exercise 3
#Vasicek's method:
q1 <- rep(0,15)
beta_adj <- rep(0,15)
for(i in 1:15){
q <- lm(data=data, formula=data[,i] ~ data[,16])
q1[i] <- vcov(q)[2,2]
beta_adj[i] <- q1[i]*mean(beta)/(var(beta)+q1[i]) +
var(beta)*beta[i]/(var(beta)+vcov(q)[2,2])
}
cbind(beta, beta_adj)
## beta beta_adj
## [1,] 1.6405843 1.4825784
## [2,] 0.3097478 0.7681785
## [3,] 1.3714738 1.3490258
## [4,] 1.5144842 1.4748744
## [5,] 0.3181215 0.5387204
## [6,] 1.4649783 1.4177191
## [7,] 0.7318921 0.8063957
## [8,] 1.9526300 1.6156642
## [9,] 0.7340391 0.8078161
## [10,] 1.4834111 1.4288997
## [11,] 1.7741452 1.5570586
## [12,] 0.9612353 1.0318080
## [13,] 0.2239906 0.3596339
## [14,] 1.9441780 1.7694200
## [15,] 1.6256587 1.4834956
10