Beruflich Dokumente
Kultur Dokumente
Rmd
Es wird einen Euro_Invester betrachtet, der ein Portfolio mit 14 Aktien von Danone S.A.in EUR und 9
Aktien von Walmart Inc.in USD h&alt. Die Wahl der Risikofaktoren ist ein Modellierungsproblem und
hängt vom jeweiligen Portfolio ab. Um diesen Portfolio zu sch&atzen, werden die Logarithmen der Preise
der Aktien sowie den Logarithmus des Wechselkurses (EUR pro USD) als Risikofaktoren verwendet. Alle
Rechnungen basieren sich auf dem Zeitraum vom 20.05.2005 bis zum 19.05.2015.
##
## Attaching package: ’zoo’
require(zoo)
library(qrmtools) #for the data analysis
Nachdem die R packages hinzugef"ugt sind, kann man die Daten SP500_const (Liste von Aktienindizes von
500 Firmen), EURSTX_const (Euro Stoxx 50 Bestandteile) und EUR_USD (Wechselkurs) laden.
Man bildet einen data.frame in dem gegebenen Zeitraum und extrahiert die Daten von Danone und Walmart.
1
## An ’xts’ object on 2005-05-20/2015-05-19 containing:
## Data: num [1:2516, 1] 37.5 38 37.9 37.6 37.6 ...
## - attr(*, "dimnames")=List of 2
## ..$ : NULL
## ..$ : chr "WMT"
## Indexed by objects of class: [Date] TZ: UTC
## xts Attributes:
## List of 2
## $ src : chr "yahoo"
## $ updated: POSIXct[1:1], format: "2016-01-03 03:42:24"
Mit dem Befehl “str” “uberpr”ufe ich die Strucktur von Daten und ihre Dimension. Wieter betrachte ich
die erste und letzte Zeile von Aktienindizes. Wie man sehen kann, es gibt keine grossen Steigungen oder
Senkungen, aber es gibt Tagen, wo Datenwerten fehlen. Diese entferne ich mit “na.omit()”.
Als n"achstes will ich die Daten verbinden und Grafiken erstellen.
#plots
plot(SP_omit, xlab = "time", main = "Walmart stocks")
2
Walmart stocks 2005−05−20 / 2015−05−19
80 80
70 70
60 60
50 50
40 40
May 20 2005 May 01 2007 May 01 2009 May 02 2011 May 01 2013 Apr 30 2015
3
Danone stocks 2005−05−20 / 2015−05−19
60 60
50 50
40 40
30 30
May 20 2005 May 01 2007 May 01 2009 May 02 2011 May 01 2013 Apr 30 2015
4
EUR to USD for our period 2005−05−20 / 2015−05−19
0.95 0.95
0.90 0.90
0.85 0.85
0.80 0.80
0.75 0.75
0.70 0.70
0.65 0.65
May 20 2005 May 01 2007 May 01 2009 May 01 2011 May 01 2013 Apr 30 2015
Von Grafiken ist leich zu sehen, dass am Anfang unseres Zeitraumes die Aktienwerten sehr niedrig sind und
zwar im May 2005 die negativ sind. F&ur das gesamte Jahr 2005 realisiert WMT Inc. einen Verlust von
-11.40%. Im nächsten Jahr, 2006, sieht das Bild bisschen besser aus, wobei Verlust auf -1.32% reduziert
wurde. Ab 2007 beginnt die Firma positive Aktienwerten -1.32% bis Jahr 2015 -1.32%, wenn die Preise
stark gesunken werden. Bei der Grafik von Danone S.A. gibt es keine kritische Punkte. Die Preise sind in
dem Zeitraum stabil.
Jetzt ist die Zeit gekommen, die Risikofaktor&anderungen berechnet zu wenden. Xt , j = Zt + 1, j − Zt , j
5
risk factor changes Danone 2005−05−23 / 2015−05−19
0.10 0.10
0.05 0.05
0.00 0.00
−0.05 −0.05
May 23 2005 May 01 2007 May 01 2009 May 02 2011 May 01 2013 Apr 30 2015
6
risk factor changes Walmart 2005−05−23 / 2015−05−19
0.05 0.05
0.00 0.00
−0.05 −0.05
May 23 2005 May 01 2007 May 01 2009 May 02 2011 May 01 2013 Apr 30 2015
7
risk factor changes exchange rates 2005−05−21 / 2015−05−19
0.02 0.02
0.01 0.01
0.00 0.00
−0.01 −0.01
−0.02 −0.02
−0.03 −0.03
May 21 2005 May 01 2007 May 01 2009 May 01 2011 May 01 2013 Apr 30 2015
Dazu sehen wir noch die Grafiken von der Risikofaktor&anderungen. Zu unseren Zwecken summiere ich die
letzte zwei “Anderungen (von Walmart und Wechselkurs). Ich will die Risikofaktor”anderungen als eine 2x2
Matrix haben.
Weiters betrachten wir die paarweise Scatterplots.
# pairwise scatterplots
pairs(as.zoo(all), main = "risk factors")
8
risk factors
30 40 50 60
80
WMT
60
40
50
BN.PA
30
0.95
0.80
EUR.USD
0.65
40 50 60 70 80 90 0.65 0.75 0.85 0.95
9
risk factor changes
0.05
BN.PA
−0.05
0.05
WMT
−0.05
Ich verwende folgende Notation: St , 1 ist der Preis von Danoneaktien, St , 2 - Preis von Walmartaktien
und St , 3 ist der Wechselkurs. Wo es notwendig ist summiere ich St , 2 und St , 3. Mit gegebenen Preisen
ergibt sich Zt , j = exp(St , j) mit j von 1, 2, 3. Wie in der VO, Zt , j bezeichnet die Risikofaktoren jeweils 1
f&ur Danone usw. Wenn die Preise und Risikofaktoren bekannt sind, kann man den Portfoliowert und die
Risikoabbildung bestimmen. In unserem Fall lauten die wie folgt: ‘r‘Vt = λ1 ∗ St , 1 + λ2 ∗ (St , 2 + St , 3) =
λ1 ∗ exp(Zt , 1) + λ2 ∗ exp(Zt , 2 + Zt , 3) = λ1 ∗ exp(Zt , 1) + λ2 ∗ exp(Zt , 2 + Zt , 3) = f (t, Z)‘.Somit haben wir
eine Darstellung des Portfoliowertes in der Form Vt = f (t, Zt ), wobei f eine Risikoabbildung bezeichnet. Mit
Werten in der Angaben bekommen wir 1296.890721 als Ergebniss:
#portfolio value
V_t <- lambda_1*S_1 + lambda_2*(S_2*exc.r)
print(paste("portfolio value:", V_t))
#risk map
risk_map <- function(time, STX_omit, SP_omit, EU_omit) {
10
lambda_1*exp(STX_omit)+lambda_2*exp(SP_omit+EU_omit)
}
#calculate the risk map for the given prices
print(paste("risk map:", risk_map(time, SciViews::ln(S_1), SciViews::ln(S_2), SciViews::ln(exc.r))))
Wichtiger Wert in Portfoliobewertung ist der Verlusst und dazugeh&orige Verlusstoperor. Folgenden Formeln
geben uns der Verlust Lt + 1 bei Risikofaktoren log returns. . Zt ist bekannt zur Zeit t, heute. Zur Zeit
t + 1 sind die Risikofaktoren eine Zufallsvariable. Die Verlustverteilung wird durch die Verteilung der
Risikofaktoränderung Xt + 1 bestimmt. Wir berechnen den Verlustoperator.
#changes of prices
S_1_new <- 55
S_2_new <- 70*0.7763
V_t_new <- lambda_1*S_1_new + lambda_2*S_2_new
#loss operator
loss_op <- function(X, w) {
-rowSums(expm1(X) * matrix(w, nrow = nrow(X), ncol = length(w), byrow = TRUE)) }
#loss
L_t_new <- -(V_t_new - V_t)
print(paste(L_t_new))
## [1] "37.821721"
Ergebnis: 37.821721. Oft ist praktisch die Delta Approximation von Verlust oder Verlustoperator zu be-
trachten. Diese kann man auch durch Gewichten ermitteln ld elta(x) = −Vt ∗ wt0 ∗ x = −Vt ∗ (wt , i ∗ xi ).
P
Die Gewicht gibt den Anteil des Portfoliowerts an, der zum Zeitpunkt t in Aktien i investiert ist. F&ur
Verlustoperator habe ich 0.0146574508122766 erhalten.
print(paste(-V_t_new*((w1_new+w2_new)*X.new)))
11
## [1] "18.4547419367623"
Der V at Risk unseres Portfolios wird auf dem Konfidenzniveau α durch die kleinste Zahl l angegeben, so
dass die Wahrscheinlichkeit, dass der Verlust diesen l &uberschreitet, nicht gr&osser als (1 − α) ist. Also
bezeichnet VaR einfach ein Quantil der Verlustverteilung. Der Expected shortfall ist defeniert wie folgt: f&ur
Verlust L mit endlichen Erwatungswert und f&ur Konfidenzniveau Diese Instrumente zu Sch&atzung von
Portfolien k&onnen durch verschiedene Methoden berechnet werden. Wir beginnen mit Varianz Kovarianz
Methode. Es wird angenommen, dass die Risikofaktor&anderungen eine multivariate Normalverteilung
(entweder unbedingte oder bedingte) haben. Der Strichprobesch&atzer m̂ ist 0.0002768749(BN.PA),
0.0003222114(WMT), −0.0000308007 (Wechselkurs). Dazugeh&orige Kovarianzmatrix ĉ betr>
1.450739e − 04 3.976235e − 05 1.536623e − 06
3.976235e − 05 2.460238e − 04 2.660877e − 05 Mit diesem Werten kann man Erwartungswert und
1.536623e − 06 2.660877e − 05 1.863853e − 05
Varianz ermittel. F&ur Verlust am Ende diese lauten wie folgt: −0.000257736, 0.01479724.
if(!is.matrix(all.con))all.con <- rbind(all, deparse.level = 0L) # the corrensponding row has no label
stopifnot(0 < alpha, alpha < 1, length(lambda) == ncol(all.con), lambda > 0) # check whether alpha is
method <- match.arg(method)
all.con. <- as.numeric(tail(all.con, n = 1)) # pick out last available stock prices ("today")
w. <- lambda*all.con.
w. <- na.omit(w.)
switch(method,
"Var.Cov" = {
12
qa <- qnorm(alpha)
"hist.sim" = {
all.con. <- as.numeric(tail(all.con, n = 1)) # pick out last available stock prices ("today")
w. <- lambda * all.con. # weights tilde{w}
L <- loss_op(X, w = w.) # historical losses
summary(L)
Die historische Simulationsmethode kann als Sch&atzung der Verteilung des Verlustoperators unter der
empirischen Verteilung von Daten angesehen werden. Das Verfahren kann unter Verwendung des Verlust-
operators kurz beschrieben werden; Wir erstellen einen univariaten Datenliste, indem wir den Operator auf
jede unserer historischen Beobachtungen des Risikofaktoränderungsvektors anwenden, um eine Reihe von
historisch simulierten Verlusten zu erhalten. Von simulierten Verlusten erstellen wir ein Histogramm.
hist(L, breaks = "Scott", probability = TRUE, xlim = c(0, 50), main = "",
xlab = substitute("Losses L",
list(sd = time[1], ed = time[2], a = alpha)), col = "gray90"); box() # histogram
legend("topright", bty = "n", inset = 0.02, legend = rownames(rm))
13
0.030
Var.−cov.
Hist. sim.
0.020
Density
0.010
0.000
0 10 20 30 40 50
Losses L
14
Die Monte-Carlo-Methode mit multivariaten Normalverteilung und die Varianz-Kovarianz-Methode führen
zu ähnlichen Ergebnissen (beide gehen von multivariaten normalverteilten Risikofaktoränderungen aus, un-
terscheiden sich jedoch in der Berechnung der Verlustverteilung (analytisch vs. empirisch)), wäherd Monte
Carlo mit t Verteilung viel anders als Varianz Kovarianz Methode ist. Die historische Simulationen und
Monte-Carlo-Methode mit t Verteilung führen zu ähnlichen Ergebnissen.
15