Hallo Jörg,
ich habe zwar noch keine Rückmeldung von meinem Prof, aber ich würde gern aus zeitlichen Gründen einfach weitermachen.
Ich denke, dass - wenn etwas anders gemacht werden muss - das direkt in der Exceldatei gemacht werden muss. Deshalb können wir eigentlich mit dem Programmieren weitermachen.
Im Anhang findest du die Excel "Insider_returns_actual". Diese beinhaltet die tatsächlichen Renditen, welche von den erwarteten Renditen nach den Modellen abgezogen werden müssen. Ich muss auf die vorhergesagten Werte zugreifen und diese von den tatsächlichen Renditen abziehen, um zu bestimmen was eine "abnormale Rendite" ist. Ich habe bezüglich der Formatierung den zweiten data.frame-Ansatz ausgewählt, wo Company und Trading_date sehr gut einsehbar sind. Ich musste allerdings den Zeitraum der predict() Funktion in der myreg-Funktion anpassen auf:
Code: Alles auswählen
P <- predict(M, newdata=Daily_returns_for_model_calc[(i.TTag-20):(i.TTag+20), c("Date", "DAX")])
weil ich ja die 20 Tage vor dem Trade als Benchmark brauche, demsprechend hat mein Dataframe jetzt 41 Spalten mit vorhersagen plus die Spalten für Company und Trading_date, also 43 Spalten. Der 21ste Tag (Spalte 23) ist dabei immer das Trading_date wenn ich mich nicht vertue, welcher quasi als "Wendepunkt" und Zeitpunkt "0" definiert ist.
Jetzt ist es so, dass ich quasi eine neue Funktion brauche, die das Rechnen übernimmt. Und zwar so, dass die erwarteten Renditen aus meinem Dataframe die 20 Tage VOR dem Trading_date liegen von den tatsächlichen Renditen abgezogen werden [Spalte 3 bis 22 des Dataframes) und das die 20 Tage nach dem Trading_date (Spalten 24 bis 43) von den tatsächlichen Renditen abgezogen werden. Spalte 23 ist hierbei ja immer der 21ste Tag und das Trading_date.
Die tatsächlichen Renditen der Insider befinden sich im Reiter "Insider_returns_actual", diese werden von den Spalten 24 bis 43 abgezogen. Die Spalten 3 bis 22 sind ja quasi eine "Benchmarkperiode" vor dem Trade, deshalb sollten diese von den entsprechenden Renditen aus dem Reiter "Daily_returns_actual".
Ich sehe im Anschluss aber wieder ein großes Problem entstehen, denn es ist so, dass die "abnormalen Renditen" der selben Tage vom selben Unternehmen zu einem Mittelwert verdichtet werden müssen. Das heißt, wenn das "Trading_date" für ein Unternehmen mehrmals vorkommt (das tut es öfters), dann muss für alle abnormalen Renditen der nachfolgenden Tage für jeden einzelnen Tag ein Mittelwert berechnet werden, damit das Kummulieren der Renditen im Anschluss nicht verzerrt wird. Ansonsten würde einige Tage ja doppelt eingerechnet werden. Ich habe extra für die Predictions die Variante gewählt wo beide Variablen vorkommen, damit die abnormalen Renditen besser zu zuordnen sind. Wenn man erstmal die abnormalen Renditen bestimmt hat (die Formatierung der Ergebnisse sollte wie bei dem Dataframe sein, was schon programmiert für die Predictions programmiert wurde), gibt es dann eine Möglichkeit die Zeilen des Dataframes, die das gleiche Trading_date und den gleichen Company-Eintrag haben, auf eine Zeile, welche den Mittelwert der Renditen für diesen Trade wiedergeben, zu verdichten?
Ich habe da irgendwie eine If-else() im Kopf, wo zwei Argumente (Trading_Date und Company) bestimmen welche verdichtet werden sollen. Die Benennung der verdichteten Zeile muss sich ja nicht mal ändern, weil die Namen ja aus Trading_Date und Company bestehen.
Vielen Dank für Deine Hilfe nochmal.
Viele Grüße,
Damian