Ich habe ein Problem, dass ich das rollende Produkt einer Reihe von 1-Perioden-Renditen berechnen muss. Die Länge des Rollfensters ist variabel. Der Zweck besteht darin, das rollende Produkt der 1-Monatsrenditen zu erhalten, das ein 12-Monats-Fenster möglichst genau abdeckt.Berechnen kumulative Produkt über 1 Jahr Zeitfenster in R
Ich war in der Lage, eine funktionierende Lösung mit roher Gewalt durch for
Schleifen und if
Aussagen zu produzieren, aber ich frage mich, ob es eine elegante Lösung ist. Ich habe viel Zeit mit rollapply
und anderen ähnlichen Funktionen versucht, aber ich war nicht in der Lage, eine Lösung zu erhalten.
Die folgenden Daten veranschaulichen das Problem.
date rt_1_period rt_12_mth_window
1 04-04-13 NA NA
2 10-04-13 0.729096362 NA
3 24-05-13 1.002535647 NA
4 30-05-13 0.993675716 NA
5 21-07-13 1.002662843 NA
6 03-08-13 1.009516582 NA
7 01-09-13 0.963099395 NA
8 20-10-13 1.012470278 NA
9 25-10-13 1.01308502 NA
10 03-11-13 1.005440704 NA
11 01-01-14 1.024208021 NA
12 11-01-14 0.996613924 NA
13 17-02-14 1.009811368 NA
14 24-02-14 1.008139557 NA
15 30-03-14 1.002794709 NA
16 30-04-14 0.998745849 1.042345473
17 02-05-14 1.002324076 1.044767963
18 27-06-14 0.997741026 1.046389027
19 24-08-14 1.015767546 1.050072129
20 05-09-14 1.014405005 1.106010894
21 02-11-14 1.013830296 1.09319212
22 09-11-14 1.013127219 1.101549487
23 16-11-14 1.012614177 1.115444628
24 18-01-15 0.986893629 1.078458006
25 24-01-15 1.028120919 1.108785236
26 10-04-15 0.912452762 0.991025615
27 09-08-15 1.004676152 0.981376513
28 07-01-16 1.004236123 0.934086003
29 01-04-16 1.02341302 0.94215696
In dem Beispiel der 12 Monate für die Zeile 29 zurück als das Produkt von 1 Periode Rückkehr von Zeile 26 bis 29, weil 02-04-15 (365 Tage ab 01-04-16) berechnet wird, enthalten ist zwischen Zeilen 25 und 26. Auf der anderen Seite ist die 12-Monats-Rendite für Zeile 15 NA, weil 30-03-13 (365 Tage vom 30.03.2014) außerhalb des Zeitfensters liegt, für das ich beobachtbare 1-Perioden-Renditen habe.
Ich würde mich freuen, wenn jemand eine Möglichkeit vorschlagen könnte, dieses Problem anzugehen.
Nur für die Klarheit, wenn die bereitgestellten Daten nicht viel Sinn ergibt, ist dies eine abgespeckte Version einer größeren Datenbank, die ich zu Illustrationszwecken erstellt habe.
Vielen Dank für die Antwort! Sehr geschätzt! Sie sind richtig am 2015-08-09. Die Daten, die ich verwendet habe, waren eine Kopie einfügen aus einer Mock-up-Excel-Tabelle und Ihre Version ist korrekt. Ich habe angefangen, Ihren Code zu verwenden und scheint gut zu funktionieren. Vielen Dank! – Abdd
Ich habe gerade versucht, den Code auf dem Real-Dataset auszuführen, was eine erweiterte Version dessen ist, was ich gepostet habe und den folgenden Fehler bekommen habe 'Fehler in Anwendung (coredata (x), 2, Funktion (y) cumprod (y)): dim (X) muss eine positive Länge haben. Wissen Sie, was Ursprung sein könnte?Vielen Dank im Voraus – Abdd
könnten Sie Ihre Frage aktualisieren und den Funktionsaufruf, den Sie gerade machen, mit 'dput (head (data)) 'einschließen, wherre' data' sind Ihre Eingabedaten. Nur dann können wir den Fehler replizieren – OdeToMyFiddle