Mehrere Werte mit einem for-Loop bestimmen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Paulina7

Mehrere Werte mit einem for-Loop bestimmen

Beitrag von Paulina7 »

Hallo,
ich muss für eine Hausarbeit in Risikomanagement eine Implementierung mit R schreiben (VaR mit gewichteter Volatilität - Moving Average).
Mein Problem ist, dass ich mit dem Programm noch nie zuvor gearbeitet habe und recht Ahnungslos bin. Es sollen die Ergebnisse für den VaR der Microsoftaktie der letzen 5 Tage berechnet werden mit der gewichteten Standardabweichung der letzten 20 Tage. Zunächst benötigen wir ja die Aktienkurse:

Code: Alles auswählen

p1 <- get.hist.quote(instrument="msft", start="2000-01-01", end= "2009-12-31", quote = "AdjClose") 
y1 <- coredata(diff(log(p1))) y1=tail(y1, T-14) 
T  <- length(y1) 
value <- 1000 
p <- 0.01

WE <- 20 
for (t in seq(T-5, T)){ 
   t1 <- t-WE+1 
   window <- y1[t1:t] 
   sigma <- sd(window) 
   VaR <- -sigma * qnorm(p) * value 
}
Ich dachte, dass mir mit dem letzten Teil des Codes in R die Werte des VaR für jeden der letzten 5 Tage berechnet werden, weil ich ja einen for-loop geschrieben habe und dachte der Code läuft jetzt 5 mal durch von T-5 in 1er Schritten bis T und gibt mir für jedes T einen neuen VaR an. Anstatt dessen zeigt es mir am Ende nur einen Wert an. Stimmt das alles was ich gemacht habe oder hab ich einen Denkfehler? Kann ich das irgendwie umschreiben dass jeder VaR-Wert von T einzeln berechnet wird?

Liebe Grüße
Paulina
Zuletzt geändert von jogo am Sa Dez 24, 2016 3:30 pm, insgesamt 1-mal geändert.
Grund: Code-Formatierung
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Mehrere Werte mit einem for-Loop bestimmen

Beitrag von jogo »

Hallo Paulina,

willkommen im Forum!
Aus welchen Paketen stammen die Funktionen get.hist.quote() und coredata() :?:
Bitte lies im Bereich FAQ folgende Themen:
viewtopic.php?f=20&t=11 und
viewtopic.php?f=20&t=29

Für Dein Problem solltest Du Dir unbedingt auch die Funktion filter() ansehen:

Code: Alles auswählen

?filter
sie gehört zum Paket stats, welches standardmäßig installiert ist und geladen wird.

Schöne Festtage wünscht Dir
Jörg
Paulina7

Re: Mehrere Werte mit einem for-Loop bestimmen

Beitrag von Paulina7 »

Habe die Pakete zoo und tseries dafür aktiviert.

Habe jetzt zur Vereinfachung einen Screenshot angehängt, wie bereits beschrieben steht da nur ein VaR Wert, gibt es eine Möglichkeit den Code für diese 5 Werte durchlaufen zu lassen, dass rechts für VaR2 für jeden T-Wert ein Ergebnis steht?

Vielen Dank auf jeden Fall schon mal :)
R Loop.PNG
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Mehrere Werte mit einem for-Loop bestimmen

Beitrag von jogo »

Hallo Paulina,

bitte schau mal, ob folgendes ein geeigneter Ersatz für Deine for-Schleife ist:

Code: Alles auswählen

VaR.t <- function(t) {
  t1 <- t-WE+1 
  window <- y1[t1:t] 
  sigma <- sd(window) 
  VaR <- -sigma * qnorm(p) * value 
}
sapply((T-5):T, VaR.t)
(ist etwas quick-and-dirty, aber ich hoffe, dass es hilft)

Du kannst natürlich auch das Ergebnis einem Objekt zuweisen:

Code: Alles auswählen

VaR <- sapply((T-5):T, VaR.t)
Gruß, Jörg
Antworten