Tietokoneharjoitus 6

Tehtävä 5

# (a) Lasketaan tuotot

file<-"http://cc.oulu.fi/~jklemela/stafin/sp500-ndx100.txt"
data<-read.table(file=file,header=TRUE)
sp500<-data[,1]
ndx100<-data[,2]

pituus<-length(sp500)
r.sp500<-sp500[2:pituus]/sp500[1:(pituus-1)]
plot(r.sp500,type="l")

r.ndx100<-ndx100[2:pituus]/ndx100[1:(pituus-1)]
plot(r.ndx100,type="l")

# (b) Lasketaan Sharpen suhdeluku.

250*mean(r.sp500-1)
sqrt(250)*sd(r.sp500)
sqrt(250)*mean(r.sp500-1)/sd(r.sp500)

#[1] 0.09905956
#[1] 0.1837502
#[1] 0.5390991

250*mean(r.ndx100-1)
sqrt(250)*sd(r.ndx100)
sqrt(250)*mean(r.ndx100-1)/sd(r.ndx100)

[1] 0.1604425
[1] 0.2712226
[1] 0.5915528

# (c) Lasketaan gamma, jolle Markowitzin kriteeri suosittelee Nasdaqia.

gammat<-seq(0.1,10,0.1)

M.sp500<-matrix(0,length(gamma),1)
mu1<-mean(r.sp500-1)
sigma1<-sd(r.sp500)
for (i in 1:length(gammat)) M.sp500[i]<-mu1-gammat[i]/2*sigma1^2

M.ndx100<-matrix(0,length(gammat),1)
mu2<-mean(r.ndx100-1)
sigma2<-sd(r.ndx100)
for (i in 1:length(gammat)) M.ndx100[i]<-mu2-gammat[i]/2*sigma2^2

matplot(gammat,M.ndx100)
matplot(gammat,M.sp500,add=TRUE,col="red")

2*(mu1-mu2)/(sigma1^2-sigma2^2)

# [1] 3.084759

# (d) Lasketaan gamma, jolle utiliteetin odotusarvo suosittelee Nasdaqia.

gammat<-seq(2,4,0.01)
u1<-matrix(0,length(gammat),1)
u2<-matrix(0,length(gammat),1)
for (i in 1:length(gammat)){
    gamma<-gammat[i]
    uut<-r.sp500^(1-gamma)/(1-gamma)
    u1[i]<-mean(uut)
    uut<-r.ndx100^(1-gamma)/(1-gamma)
    u2[i]<-mean(uut)
}
matplot(gammat,u2,type="l")
matplot(gammat,u1,add=TRUE,col="red",type="l")

plot(gammat,u2-u1,type="l")
segments(0,0,10,0,col="red")

ind<-(u2>u1)
minu<-max(gammat[ind])
minu

#[1] 3.13

gammat<-seq(2,100,0.5) u1<-matrix(0,length(gammat),1) u2<-matrix(0,length(gammat),1) for (i in 1:length(gammat)){ gamma<-gammat[i] uut<-r.sp500^(1-gamma)/(1-gamma) u1[i]<-mean(uut) uut<-r.ndx100^(1-gamma)/(1-gamma) u2[i]<-mean(uut) } matplot(gammat,u2,type="l") matplot(gammat,u1,add=TRUE,col="red",type="l") gammat<-seq(10,20,0.1) u1<-matrix(0,length(gammat),1) u2<-matrix(0,length(gammat),1) for (i in 1:length(gammat)){ gamma<-gammat[i] uut<-r.sp500^(1-gamma)/(1-gamma) u1[i]<-mean(uut) uut<-r.ndx100^(1-gamma)/(1-gamma) u2[i]<-mean(uut) } matplot(gammat,u1,col="red") matplot(gammat,u2,add=TRUE) gammat<-seq(2,2.01,0.0001) u1<-matrix(0,length(gammat),1) u2<-matrix(0,length(gammat),1) for (i in 1:length(gammat)){ gamma<-gammat[i] uut<-r.sp500^(1-gamma)/(1-gamma) u1[i]<-mean(uut) uut<-r.ndx100^(1-gamma)/(1-gamma) u2[i]<-mean(uut) } matplot(gammat,u1,col="red",type="l") matplot(gammat,u2,add=TRUE,type="l") sqrt(250)*sd(r.sp500) sp500.neq<-(r.sp500 < mean(r.sp500)) sqrt(250)*sqrt(sum((r.sp500[sp500.neq]-mean(r.sp500))^2)/length(sp500.neq)) sp500.pos<-(r.sp500 > mean(r.sp500)) sqrt(250)*sqrt(sum((r.sp500[sp500.pos]-mean(r.sp500))^2)/length(sp500.pos)) # [1] 0.1544215 # [1] 0.1117161 # [1] 0.106602 sqrt(250)*sd(r.ndx100) ndx100.neq<-(r.ndx100 < mean(r.ndx100)) sqrt(250)*sqrt(sum((r.ndx100[ndx100.neq]-mean(r.ndx100))^2)/length(ndx100.neq)) ndx100.pos<-(r.ndx100 > mean(r.ndx100)) sqrt(250)*sqrt(sum((r.ndx100[ndx100.pos]-mean(r.ndx100))^2)/length(ndx100.pos)) # [1] 0.2791358 # [1] 0.1981676 # [1] 0.1965577