Inspiriert von der Werbung für Strukturprodukte auf
Habré , passte das Python-Skript für ihre unabhängigen Tests an. Die Hauptidee ist, dass diese Produkte 100% Kapitalschutz bieten. Und angesichts von 10 Jahren Bullenmarkt ist die historische Leistung solcher Produkte mit einem risikofreien Paradies verblüffend.
Dieser Artikel ist interessant für Anfänger-Python-Programmierer, die daran interessiert sind, ihr Geld zu verwalten. Nun, für einige kann dieses Tool nützlich sein, um solche Strategien selbst zu entwickeln. Aber seien Sie vorsichtig, Makler schreiben, dass dies nicht jedermanns Sache ist.
Der Code wird auf GitHub als Jupyter-Notizblock veröffentlicht. Lass uns gehen!
Ein paar Worte zur Einführung
Ich werde an amerikanischen Aktien testen und dort wird die Rendite niedriger sein als in Rubel. Der russische Markt in absoluten Zahlen in den Charts ist interessanter, birgt aber mehr Risiken. Das Wesen der Tests ändert sich hiervon nicht.
Wir beziehen die Daten aus den kostenlosen Alpha Advantages, wo Sie zuerst den Schlüssel erhalten müssen, indem Sie die E-Mail-Adresse teilen. Kurze Anleitung in einem Notizbuch. Bei Finam können Sie russische Wertpapiere notieren.
Strukturelles Produktcharisma
Kurz gesagt, Ihr Kapital ist sicher und die Rendite ist höher als die Bankeinlage (Staatsanleihen). Hier fehlen nur einige Elemente der Gleichung:
- Es gibt immer Einnahmen aus einer Bankeinlage, aber es besteht das Risiko, Null zu spielen.
- Sie werden einen Gewinn machen, aber der Makler beansprucht ein bedeutendes Stück Kuchen;
- Die Verwendung von investiertem Geld ist beschränkt.
- Der Broker trägt praktisch keine Risiken und beteiligt sich nur am Gewinn.
Strategie
Betrachten Sie die einfachste Strategie:
- Wir kaufen 90% des Kapitals kurzfristiger Staatsanleihen;
- Für den Rest kaufen wir einen risikoreichen Vermögenswert;
- Wir haben zu Beginn des Berichtszeitraums einen Stopp bei 10% des Preises eingestellt.
Im Zentrum der Strategie: Staatsanleihen geben 1-3% pro Jahr, praktisch ohne Drawdown (wenn es eine Rendite gibt). 10% der Inanspruchnahme eines mit 10% des Kapitals gekauften Vermögenswerts sind genau das Risiko, das Anleihen abdecken. In Zeiten des Bullenmarktes können einige Aktien mehrmals wachsen, was uns glücklich macht.
Um diese Strategie manuell zu wiederholen, müssen Sie die folgenden Schritte ausführen:
- Anleihen kaufen. Zum Beispiel in Form eines ETF.
- Aktien kaufen.
- Geben Sie eine Stop-Order auf.
Wie zu testen
Ich werde einige Lösungen mit Code-Auszügen kurz beschreiben, die das Testen sehr flexibel und bequem machten.
Zeitplan
Sie können das Gleichgewicht in den folgenden Zeiträumen wieder herstellen: Woche, Monat, Jahr. Und auch an jedem Tag innerhalb des Zeitraums: dem ersten, dem neunten, dem letzten. Die Klasse Schedule () ist dafür verantwortlich:
Datenzyklus
StructuredProductMill().run()
Wie in einem der
Artikel beschrieben , können wir nur Neuausgleichstermine in einem Zyklus umgehen und alle anderen Tage überspringen. Aber dann verlieren wir Statistiken über Veränderungen der Vermögenswerte innerhalb des Zeitraums. Wir werden nicht für jeden Tag Rentabilität und Drawdowns sehen. Dieses Skript wird zum Nachteil der Geschwindigkeit jeden Tag ausgeführt, sodass Sie den Marktwert offener Positionen anzeigen und eine Stop-Order-Prüfung durchführen können.
Neuausrichtung
StructuredProductMill().rebalance()
Hier werden Vermögenswerte, die geöffnet werden können, dem verfügbaren Kapital zugeordnet. Nach dem Vergleich der Berechnung mit offenen Positionen werden Transaktionen für die erforderliche Anzahl ausgeführt:
Angebote
StructuredProductMill().trade()
Und hier können Sie aus Gründen der Geschwindigkeit Details opfern und nur die Änderung der Rentabilität jeder Position steuern. Das Skript berücksichtigt jedoch Provisionen und den Wert von Assets und führt auch einen Transaktionsverlauf, sodass Sie an jedem Tag des Tests Transaktionen berechnen und eine Stop-Order ausführen können. Diese Methode aktualisiert die Position und Größe des freien Caches.
Starten
Zum Ausführen müssen Sie eine Reihe von Assets mit Freigaben und Testparametern angeben. Wir werden die Strukturprodukte für das Kalenderjahr testen:
Am unteren Rand des Notizbuchs befinden sich Diagramme mit Rentabilität und Drawdowns zum Zeitpunkt der Neuausrichtung (zum Jahresende), die die zum Zeitpunkt des Berichts extrem niedrigen Kapitalabnahmen und die stetig wachsende Rentabilität bestätigen. Obwohl diese Rentabilität gegenüber dem breiten Index der amerikanischen Unternehmen S & P 500 verliert.
Ergebnisse
Die Tests umfassten seit 2011 frei gehandelte amerikanische Instrumente:
- BIL - ETF für kurzfristige Staatsanleihen mit einer Rendite von 2% pro Jahr zum Zeitpunkt des Schreibens. Denken Sie daran, dass die Raten im Zeitraum von 2009 bis 2017 nahe Null lagen. Eine Alternative ist die Verwendung von MINT (einem Fonds für kurzfristige festverzinsliche Instrumente).
- AAPL - Apple Aktie.
- MSFT - Microsoft-Aktie.
- TSLA - Tesla-Aktien.
Aapl
Dieses Design brachte 8 Jahre lang einen Umsatz von 24% (durchschnittlich 2,6% pro Jahr) mit einem Drawdown zwischen den Neugewichten von -6%. Aber um die Jahreswende ist der Drawdown ungefähr Null. Der Stopp wurde nicht berührt, der Markt mit 180% des Umsatzes verlor Ordnung.

Rentabilität und Drawdown für jeden Tag (Profitabilität links, Drawdown rechts).

Rentabilität und Drawdown an der Kreuzung der Jahre (Rentabilität links, Drawdown rechts).
Msft
Dieses Design brachte 8 Jahre lang einen Umsatz von 26% (durchschnittlich 2,75% pro Jahr) mit einem Drawdown zwischen den Neugewichten von -2%. An der Kreuzung der Jahre gibt es keinen Drawdown.


TSLA
Dieses Design brachte 8 Jahre lang einen Umsatz von 45% (durchschnittlich 4,6% pro Jahr) mit einem Drawdown zwischen den Neuausrichtungen von bis zu -15%. Aber das alles im Jahr 2013, als Tesla fast fünfmal wuchs. Zum Jahreswechsel beträgt der Drawdown bis zu -2%. Der hektischste, aber auch profitabelste Passagier.


Fazit
Mit Notepad können Sie beliebige Portfolio-Kompositionen testen. Dies können Humerusfonds oder mehrere Unternehmen sein. Obwohl im Allgemeinen ohne Schutzgüter.
GitHub-Repository .