Tietokoneharjoitus 3

Tutkitaan aikasarjaa SP500 osakeindeksin päivittäisistä päätoskursseista ajalta 1950-01-03 -- 2014-08-19.

Tehtävä 5

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

file<-"http://cc.oulu.fi/~jklemela/marketrisk/sp500.csv"
data<-read.csv(file=file)
sp500<-data[,7]
sp500<-sp500[length(sp500):1]
plot(sp500,type="l")

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

Tehtävä 5a

Oletetaan, että portfolio koostuu 10 kappaleesta SP500 indeksiosuutta. Oletetaan, että eletään päivää 2014-08-28, jolloin yhden indeksiosuuden arvo on 1996.74 USD. Laske portfoliolle VaR ja ES yhden päivän horisontilla kun alpha = 0.95 ja alpha=0.99, käyttäen empiiristä kvantiilia.

St<-sp500[length(sp500)]
losses<--10*St*tuotto

alpha<-0.95
n<-length(losses)
m<-ceiling(n*(1-alpha))
VaR<-sort(losses,decreasing=TRUE)[m]
oikea.hanta<-sort(losses,decreasing=TRUE)[1:m]
ES<-mean(oikea.hanta)
VaR
ES

#[1] 289.3378
#[1] 452.0056

alpha<-0.99
n<-length(losses)
m<-ceiling(n*(1-alpha))
VaR<-sort(losses,decreasing=TRUE)[m]
oikea.hanta<-sort(losses,decreasing=TRUE)[1:m]
ES<-mean(oikea.hanta)
VaR
ES

#[1] 521.0938
#[1] 779.0864

Tehtävä 5b

Estimoi VaR ja ES edellisen tehtävän portfoliolle käyttäen oletusta, että tuotot ovat normaalisti jakautuneita.

St<-sp500[length(sp500)]
losses<--10*St*tuotto

mu<-mean(losses)
sigma<-sd(losses)

alpha<-0.95
VaR2<-mu+sigma*qnorm(alpha)
ES2<-mu+sigma*dnorm(qnorm(alpha))/(1-alpha)
VaR2
ES2

#[1] 313.7045
#[1] 394.8905

alpha<-0.99
VaR2<-mu+sigma*qnorm(alpha)
ES2<-mu+sigma*dnorm(qnorm(alpha))/(1-alpha)
VaR2
ES2

#[1] 446.1122
#[1] 511.9506

Tehtävä 1

p1<-0.95^2
p2<-2*0.95*0.05

alpha<-seq(0,1,0.001)
q<-matrix(0,length(alpha),1)
for (i in 1:length(alpha)){
    if (alpha[i]<=p1) q[i]<-(2-2*p1-p2)/(1-alpha[i])
    else if (alpha[i]>=p1+p2) q[i]<-2
    else q[i]<-(2-alpha[i]-p1-p2)/(1-alpha[i])
}
plot(alpha,q,type="l")

alpha<-seq(0,1,0.001)
q2<-matrix(0,length(alpha),1)
for (i in 1:length(alpha)){
    if (alpha[i]<=0.95) q2[i]<-0.1/(1-alpha[i])
    else q2[i]<-2
}
plot(alpha,q2,type="l")

matplot(alpha,q,type="l")                          # q(L1)+q(L2)
matplot(alpha,q2,add=TRUE,col="red",type="l")      # q(L1+L2)