bifteck Juni 8, 2010 Hallo erstmal kommen wir gleich zum Punkt. Im Rahmen meiner Bachelor-Arbeit mache ich eine empirische Studie über effiziente Portfolios nach Markowitz in Kombination mit der Momentum Strategie. D.h. ich berechne aus historischen Kursen z.B. vom 02.07.2001 - 28.12.2001 ein effizientes Portfolio nach Markowitz, welches die gleiche Rendite / Vola wie der DAX hat. Dieses Portfolio lege ich dann für den 6 monatigen Zeitraum vonm 28.12.2001-28.06.2002 an. Das ganze mache bis Ende 2009 ,und dann möchte ich wissen wie meine Strategie aufgegangen ist. Um das ganze noch spannender zu machen, kombinier ich dies mit der Momentum Strategie. Kurz dazu: Ich meiner Momentum-Strategie würde ich aus einem Index die 5 Aktien mit der höchsten Endrendite zu je 20% auswählen und diese dann für 6 Monate anlegen. Studien haben gezeigt, dass Aktien oft in Trends welche über 6 Monate hinaus gehen steigen und daher diese Strategie vielversprechend scheint. Der Haken: Die Momentum-Strategie berücksichtigt nur die Rendite der Vergangenheit, jedoch nicht das Risiko. Theoretisch könnte man zwar eine Überrendite erzielen, das Risiko (Volatilität) war aber wahrscheinlich auch größer als beim Vergleichs-Index. Bringt man Markowitz und Momentum nun zusammen ergibt sich meine Konstelation: Ich wähle 5 Aktien, welche in der Vergangenheit der gleichen oder weniger Schwankung unterlagen wie der DAX und dabei die beste Rendite erzielt haben. Am Ende schau ich wieder ob ich eine Outperformance erreicht habe und welcher Vola ich dabei unterlag. Nun zu meiner Datei (angehängt): - VOLA: Die Berechnung dürfte selbst Excel-Kennern etwas kompliziert erscheinen. Ich rechne zuerst alle Aktien in Prozent aus, dann summier ich die verwendeten Aktien, darauf folgt die prozentuale Veränderung zum Vortag und schließlich wird diese logarithmiert. Zum Schluss wird von den logarithmierten Abweichungen die Standardabweichung errechnet und dann mit der Wurzel der Anzahl der Messeinheiten mulitpliziert. Alles klar? Hier nochmal das Verfahren zum nachlesen http://www.aecon-gmbh.de/service/rendite_und_volatilitaet.pdf . Ich habe die Vola absichtlich nicht über Varianz+Korrel errechnet, da es bei der Einbeziehung des natürlichen Logarithmus Abweichungen gab. Die indirekten Bezüge waren außerdem nötig um flexible von-bis Termine zuzulassen. - RENDITE: Rendite ist ganz normal die absoulute Rendite am Jahresende, also: Gewichtung_Aktie1 * 6-monats-Rendite_Aktie1 + Gewichtung_Aktie2 * 6-monats-Rendite_Aktie2 . Ziel ist es das ganze mit dem Solver zu berechnen. Nehmen wir als Beispiel Zeile 89. Ich möchte Zeile 89 so gewichten, dass der Wert in J4 maximal ist und Zelle I4 größer als E4 ist. Außerdem muss die Summe der Anteile 1 sein. Wg. der Momentum-Strategie dürfen außerdem nur 5 Aktien zu je 20% kombiniert werden (dies habe ich ermöglicht, indem ich Zeile 89*5 nehme und sage, dass nur ganzzahlige Ergebnisse erkaubt sind. In Zelle I4 und J4 wird dann wieder durch 5 dividiert) Nun zu meinen Problemen: - Der Solver scheint völlig überlastet und braucht Ewigkeiten. Außerdem stürzt er öfters schon mal ab. Gibt es Möglichkeiten den Solver für meine Bedürfnisse zu optimieren? - Ich müsste für jede einzelne Zeile den Solver erneut aktivieren und die Nebenbedingungen ändern. Gibt es eine Möglichkeit dies mit VBA zu automatisieren (ich habe mir auch ganz fest vorgenommen im August VBA zu lernen) - Generell bin ich für jede Art von Rückmeldung dankbar! Vielen Dank schon im Voraus Bifteck effizientes_portfolio.xlsx Diesen Beitrag teilen Link zum Beitrag
Anleger Klein Juni 8, 2010 Möglicherweise ist Excel in dem Fall auch einfach das falsche Programm....es gibt Algebraprogramme, allerdings weiß ich nicht ob es in deinem speziellen Fall das ist was du suchst. Maple (13 oder 14 müsste die aktuelle Version sein) kann dir bei richtiger Programmierung besser helfen als Excel. Diesen Beitrag teilen Link zum Beitrag
Norbert-54 Juni 8, 2010 Möglicherweise ist Excel in dem Fall auch einfach das falsche Programm....es gibt Algebraprogramme, allerdings weiß ich nicht ob es in deinem speziellen Fall das ist was du suchst. Maple (13 oder 14 müsste die aktuelle Version sein) kann dir bei richtiger Programmierung besser helfen als Excel. Die Auswertung mit dem Solver habe ich eben probiert, es dauert tatsächlich extrem lange (nach 45 Minuten abgebrochen). Wahrscheinlich geht nur die Brute Force Methode: alle Möglichkeiten per VBA in die entsprechenden Zeilen einspielen und dann selektionieren. Norbert Diesen Beitrag teilen Link zum Beitrag
bifteck Juni 9, 2010 Möglicherweise ist Excel in dem Fall auch einfach das falsche Programm....es gibt Algebraprogramme, allerdings weiß ich nicht ob es in deinem speziellen Fall das ist was du suchst. Maple (13 oder 14 müsste die aktuelle Version sein) kann dir bei richtiger Programmierung besser helfen als Excel. Die Auswertung mit dem Solver habe ich eben probiert, es dauert tatsächlich extrem lange (nach 45 Minuten abgebrochen). Wahrscheinlich geht nur die Brute Force Methode: alle Möglichkeiten per VBA in die entsprechenden Zeilen einspielen und dann selektionieren. Norbert Bei Excel würde ich schon gerne bleiben. Was hat es denn mit der Brute Force Methode auf sich? Wie funktioniert die? Diesen Beitrag teilen Link zum Beitrag
Anleger Klein Juni 9, 2010 Bei Excel würde ich schon gerne bleiben. Was hat es denn mit der Brute Force Methode auf sich? Wie funktioniert die? Im Prinzip nichts anderes als die (ausgewählten) Möglichkeiten auszuprobieren und damit den Aufwand für den Solver zu beschränken (Wikiartikel). Diesen Beitrag teilen Link zum Beitrag
bifteck Juni 9, 2010 Bei Excel würde ich schon gerne bleiben. Was hat es denn mit der Brute Force Methode auf sich? Wie funktioniert die? Im Prinzip nichts anderes als die (ausgewählten) Möglichkeiten auszuprobieren und damit den Aufwand für den Solver zu beschränken (Wikiartikel). Ein Wunder! Ich hab die Formeln soweit vereinfacht, dass zwar die Termine nicht mehr variabel sind, aber der Solver endlich fix läuft. Jetzt bräuchte ich nur noch ein Markro, der im Solver ALLES, sowohl Zielzelle als auch Nebenbedingung immer um eine Zelle nach unten verschiebt. Das ist doch für einige von Euch mit Sicherheit nur eine Kleinigkeit. Anbei die Datei. Freu mich drauf! vereinfacht_ganzzahlig.xlsx Diesen Beitrag teilen Link zum Beitrag
Norbert-54 Juni 9, 2010 Biftek, Formuliere bitte nochmal die Nebenbedingungen. Norbert Diesen Beitrag teilen Link zum Beitrag
bifteck Juni 10, 2010 Biftek, Formuliere bitte nochmal die Nebenbedingungen. Norbert Guten Morgen Anbei die Nebenbedingung als Solver-Screenshot. Schriftlich: - Die Rendite soll maximal sein. Bei folgenden Bedingungen: - Summe der Anteile muss 5 !!! betragen (zur Berechnung der Rendite und der Vola wird wieder durch 5 geteilt) - Anteile müssen kleiner gleich maximale Anteile pro Jahr sein (notwendig, da von 43 Werten nur 30 genommen werden dürfen) - Anteile müssen ganzzahlig sein (d.h. können nur 0 oder 1 sein [deswegen auch die Summe=5]) -Anteile müssen größer gleich 0 sein - Die Vola des zusammengesetzten Portfolios muss größer gleich der Vola des DAX-Portfolios sein gruß Bifteck Diesen Beitrag teilen Link zum Beitrag
Norbert-54 Juni 10, 2010 Hallo Bifteck, Anbei Deine Datei mit Makro, das den Solver steuert. Beim Öffnen der Datei. Makro aktivieren. Dann Makro aufrufen, "bearbeiten" drücken. Den Reiter "extras" dann "Verweise" drücken. Das Kästchen "Solver" suchen und ankreuzen. Wenn das Kästchen nicht da ist: Im Laufwerk c: die Datei Solver.xla (Excel 2007 Solver.xlam) suchen. Normalerweise in Programme/Office12 (Excel2007) /Library/solver. Dort darauf achten bei Dateityp "alle Dateien" auswählen. Die Datei Solver.xla(m) doppelklicken. Dann erscheint das Kästchen. Dann ankreuzen, wenn es nicht schon angekreuzt ist. In Makro 5 habe ich bereits 2 Auswertungszeiträume realisiert (Vergleiche mit Makro4!). Du kannst das durch paste and copy und durch anschliessende Modifikation fortführen. Es fällt auf, dass im zweiten Zeitraum offensichltlich keine Vola möglich ist, die kleiner als die DAX Vola ist. Deswegen sind dort nicht alle Werte = 1. Du kannst gerne bei Unklarheiten fragen. Norbert P.S.: Ich habe Deinen Rechnungsweg nicht versucht, nachzuvollziehen. Hast Du auch Kovarianzen berücksichtigt? Diesen Beitrag teilen Link zum Beitrag
bifteck Juni 16, 2010 Hallo Bifteck, Anbei Deine Datei mit Makro, das den Solver steuert. Beim Öffnen der Datei. Makro aktivieren. Dann Makro aufrufen, "bearbeiten" drücken. Den Reiter "extras" dann "Verweise" drücken. Das Kästchen "Solver" suchen und ankreuzen. Wenn das Kästchen nicht da ist: Im Laufwerk c: die Datei Solver.xla (Excel 2007 Solver.xlam) suchen. Normalerweise in Programme/Office12 (Excel2007) /Library/solver. Dort darauf achten bei Dateityp "alle Dateien" auswählen. Die Datei Solver.xla(m) doppelklicken. Dann erscheint das Kästchen. Dann ankreuzen, wenn es nicht schon angekreuzt ist. In Makro 5 habe ich bereits 2 Auswertungszeiträume realisiert (Vergleiche mit Makro4!). Du kannst das durch paste and copy und durch anschliessende Modifikation fortführen. Es fällt auf, dass im zweiten Zeitraum offensichltlich keine Vola möglich ist, die kleiner als die DAX Vola ist. Deswegen sind dort nicht alle Werte = 1. Du kannst gerne bei Unklarheiten fragen. Norbert P.S.: Ich habe Deinen Rechnungsweg nicht versucht, nachzuvollziehen. Hast Du auch Kovarianzen berücksichtigt? Hi Nobert, danke für deine Arbeit. Meine Vorstellung war allerdings nicht die Solver-Formel 17mal zu kopieren und immer eine Zeile hinzu zu addieren. Sondern das ganze elegant mit einer Schleife zu lösen. So wäre ich viel flexibler das ganze auch auf andere Felder anzuwenden. Eine Idee, wie ich die Schleife erstelle? Bzgl. der Kovarianzen habe ich einen anderen Lösungsweg gewählt. Da ich von allen Papieren die historischen Kurse habe, stelle ich das Portfolio in der Vergangenheit einfach nach und berechne davon die Varianz. Gruß Bifteck Diesen Beitrag teilen Link zum Beitrag