Tietokoneharjoitus 7

Tutkitaan vektoriaikasarjaa SP500 ja Nasdaq-100 osakeindeksien paivittaisist paatoskursseista ajalta 1985-10-01 - 2012-11-16.

Tehtävä 5

Lue data R:ään ja muuta hintojen aikasarja tuottojen aikasarjaksi.

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

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

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

# yksiulotteinen menetelma #############

st1<-sp500[pituus]
st2<-ndx100[pituus]
lambda1<-10
lambda2<-5

losses<--(lambda1*st1*tuotto.sp500+lambda2*st2*tuotto.ndx100)
mu<-mean(losses)
sigma<-sd(losses)
alpha<-0.95
VaR<-mu+sigma*qnorm(alpha)
VaR

# [1] 595.8292

# moniulotteinen menetelma ###############

Mu<-matrix(0,2,1)
Mu[1,1]<-mean(tuotto.sp500)
Mu[2,1]<-mean(tuotto.ndx100)
Sigma<-matrix(0,2,2)
Sigma[1,1]<-var(tuotto.sp500)
Sigma[2,2]<-var(tuotto.ndx100)
Sigma[1,2]<-cov(tuotto.sp500,tuotto.ndx100)
Sigma[2,1]<-Sigma[1,2]
vec<-matrix(0,2,1)
vec[1,1]<--lambda1*st1
vec[2,1]<--lambda2*st2
mub<-t(vec)%*%Mu
sigmab<-sqrt(t(vec)%*%Sigma%*%vec)
VaR2<-mub+sigmab*qnorm(alpha)
VaR2

# [1,] 595.8292


# 1) yksiulotteisessa menetelmassa estimointi pitaa tehda aina uudestaan
#    kun painoja muutetaan

# 2) moniulotteinen mentelma mahdollistaa monipuolisemman mallintamisen
#    mutta VaR voi olla vaikeampi laskea

Tehtävä 6

n<-length(tuotto.sp500)

or<-order(tuotto.sp500)
mones<-matrix(0,n,1)
for (i in 1:n) mones[or[i]]<-i  
cop.sp500<-mones/(n+1) 

or<-order(tuotto.ndx100)
mones<-matrix(0,n,1)
for (i in 1:n) mones[or[i]]<-i  
cop.ndx100<-mones/(n+1)  

plot(cop.sp500,cop.ndx100)


cop.sp500.2<-qnorm(cop.sp500)
cop.ndx100.2<-qnorm(cop.ndx100)
plot(cop.sp500.2,cop.ndx100.2)

Tehtävä 7

# vasen hanta, SP500
R<-tuotto.sp500
Y<-sort(R) 
N<-1000
alpha<-matrix(0,N-1,1)
summa<-matrix(0,N,1)
sum<-0
for (i in 1:N){
   sum<-sum+log(-Y[i])
   summa[i]<-sum
}
for (i in 2:N) alpha[i-1]<-i/(summa[i]-i*log(-Y[i]))
plot(alpha,type="l",xlab="N(c)",ylab="alpha")


# vasen hanta, Nasdaq-100
R<-tuotto.ndx100
Y<-sort(R)
N<-1000
alpha<-matrix(0,N-1,1)
zumma<-matrix(0,N,1)
zum<-0
for (i in 1:N){
   zum<-zum+log(-Y[i])
   zumma[i]<-zum
}
for (i in 2:N) alpha[i-1]<-i/(zumma[i]-i*log(-Y[i]))
plot(alpha,type="l",xlab="N(c)",ylab="alpha")


# oikea hanta, SP500
R<-tuotto.sp500
Y<-sort(R,decreasing=TRUE)
N<-1000
alpha<-matrix(0,N-1,1)
summa<-matrix(0,N,1)
sum<-0
for (i in 1:N){
   sum<-sum+log(Y[i])
   summa[i]<-sum
}
for (i in 2:N) alpha[i-1]<-i/(summa[i]-i*log(Y[i]))
plot(alpha,type="l",xlab="N(c)",ylab="alpha")

plot(alpha[10:length(alpha)],type="l",xlab="N(c)",ylab="alpha")


# oikea hanta, Nasdaq-100
R<-tuotto.ndx100
Y<-sort(R,decreasing=TRUE)
N<-1000
alpha<-matrix(0,N-1,1)
zumma<-matrix(0,N,1)
zum<-0
for (i in 1:N){
   zum<-zum+log(Y[i])
   zumma[i]<-zum
}
for (i in 2:N) alpha[i-1]<-i/(zumma[i]-i*log(Y[i]))
plot(alpha,type="l",xlab="N(c)",ylab="alpha")

plot(alpha[20:length(alpha)],type="l",xlab="N(c)",ylab="alpha")

n<-length(tuotto.sp500) df<-4 cova<-diag(1,2) eig<-eigen(cova,symmetric=TRUE) sigsqm<-eig$vectors%*%diag(eig$values^{1/2}) seed<-1 set.seed(seed) symmedata<-matrix(rt(2*n,df=df),n,2) dendat<-t(sigsqm%*%t(symmedata)) plot(dendat) dendat<-pt(dendat,df=df) plot(dendat) dendat<-qnorm(dendat) plot(dendat)