4Tg·

3xGTAA - Der große Backtest (Teil 1)

Hallo liebe 3XGTAA Fans,


ich habe mir zur Aufgabe gemacht, einen Backtest von @Epi 3xGTAA zu schreiben, der mindestens 20 Jahre zurückreicht, mit genauen Daten und so wenigen pauschalen Annahmen wie möglich. Das hier ist Teil 1 dieser Reihe. Hier wird es erstmal nur um die Beschaffung und Datengenerierung gehen.


Nun aber zum eigentlichen Inhalt:


Um die Strategie bis ~2000 backzutesten, brauchen wir alle Assets die für die Strategie notwendig sind.

Diese sind:

- 3x Nasdaq 100

- 1x Bitcoin (BTC) *(ab 2018)*

- 3x Gold

- 3x Silver

- 1x Geldmarkt

- 7x USD / EUR

- 7x EUR / USD

- 2x Oil

- 5x US Treasuries (TLT)

- 3x Euro Stoxx 50


Der Grundablauf ist für alle Assets gleich - naja zumindest so hatte ich mir das erhofft aber dazu später mehr. Erst werden die Daten des ungehebelten Assets beschafft und im Rohformat gesammelt, in ein standardisiertes Format gebracht und fehlerhafte Daten korrigiert. Danach wird aus dem Asset das benötigte Hebelprodukt generiert. Zu guter Letzt wird das synthetische Produkt mit dem echten ETF verglichen um sicherzustellen, dass alle Annahmen korrekt sind.


Alle Daten bis möglichst nah ans Jahr 2000 zu finden ist nicht sonderlich einfach und erfordert manchmal kreative Lösungen. Von einem einfachen API Aufruf bis hin zum scrapen von Webseiten ist alles dabei, aber ich habe es geschafft für alle Assets Daten zu finden.


Wie synthetisiert man ein gehebeltes Asset?


Man muss beim Hebeln zu aller erst einen verlässlichen Basiswert haben: bei Aktien ein Net Total Return Index, bei Rohstoffen den Preis, so weit so klar.

Des Weiteren braucht man die Zinsen des Landes in dem das Produkt gehandelt wird (in unserem Fall meistens USD). Diese sind wichtig, da sie die Kosten des Hebels darstellen (Finanzierungskosten).

Zusätzlich zu den risikofreien Zinskosten müssen die Emittenten eines gehebelten Produkts auch noch einen Zinsaufschlag zahlen (Spread), da diese nicht komplett risikofrei sind. Je nach Asset ist dieser Aufschlag unterschiedlich hoch.

Die ganz klassischen Produktkosten gibt es natürlich auch noch - TER, sollte ein Begriff sein. ;)

Nun aber zu einem spezielleren Faktor, dem Drag. Dieser entsteht hauptsächlich durch Rollverluste bei Contango (wenn der Future-Preis höher ist als der Spot-Preis). Beim monatlichen "Rollen" der Futures muss man billig verkaufen und teuer nachkaufen, was zu stetigen Verlusten führt. Umgekehrt können bei Backwardation (Future < Spot) Rollgewinne entstehen. Diesen Effekt darf man beim Gold nicht vergessen und beim Öl wird es noch sehr verrückt.

attachment

Alles wird initial in USD berechnet und später ggf. in Euro umgerechnet.

Zinsen: Für die Hebelprodukte nutze ich US-Zinsen (anfangs 13-Week T-Bills, später noch kürzer laufende Raten wie Overnight Rates, da diese bei gehebelten Währungen genauer sind).


Die Assets im Detail


1x Geldmarkt (Synthetisch)

Erstmal habe ich den europäischen Geldmarkt basierend auf dem EZB Leitzins synthetisiert und bis 1999 zurückgerechnet, da es Geldmarktfonds in der heutigen Form erst seit ungefähr 2008 gibt. Danach habe ich das Ergebnis noch in USD umgerechnet, um später eine einheitliche Währung zu haben.

Das Ergebnis sieht so aus:

attachment

Ziemlich langweilig, aber das ist ja auch gut so. :)


Es fing alles so schön an

Für Nasdaq, Gold habe ich die Daten direkt von yfinance bezogen, da diese sehr sauber sind und bis 1999 zurückreichen - Wenn die anderen Assets auch nur so einfach gewesen wären. :(


3x Nasdaq 100

Hebel: 3

TER: 0.75%

Zins-Spread: 0.6%

attachment



3x Gold

Hebel: 3

TER: 0.99%

Zins-Spread: 0.9%

Drag: 0,2%

attachment

Wie ihr seht ist das Ergebnis ziemlich nah am echten Produkt.


1x Bitcoin

Technisch gesehen ist BTC auch in der "das ging einfach"-Gruppe, da er in der 3xGTAA aber nicht gehebelt wird, nehme ich hier die reinen Spot-Daten (ab 2014 verfügbar, Backtest ab 2018).


Forex

Als basisi hierfür dienen die Währungskurse von der ECB. Hier gibt es Besonderheiten beim Zins-Spread.

Hier fingen die Probleme an: Gehebelte Währungen funktionieren anders als Aktien. Man hält eine Währung (Yield, positiver Zins) und leiht die andere (Borrow, negativer Zins).

Die Standard-Formel musste erweitert werden, um diesen "Carry Trade" abzubilden. s.O.

5x Long EUR / Short USD:

Hebel: 5

TER: 0.8%

Zins-Spread: 1.0% (Höher, da USD-Borrowing historisch teurer/knapper war -> Funding Squeeze).

attachment



5x Long USD / Short EUR:

Hebel: 5 (und 7)

TER: 0.8%

Zins-Spread: 0.0%

attachment

(Ich habe auf dem Schirm das in der 3xGTAA 7x Währungen genutzt werden.)


US Treasuries (TLT)

Edit: Ich habe den VUSTX zuätzlich genutzt um die Daten bis vor 2000 zu verlängern so kann bis 2000 bebacktested werden.


Nun fing der Spaß erst richtig an, leider gibt das die Daten des TLT erst seit ~2002 und dann sogar nur alls Kurs und nicht als Net Total Return.

Die Beschaffung von Treasury-Daten war besonders anspruchsvoll, da TLT erst ab 2002 existiert. Um die Strategie bis 2000 zu testen, musste ein Stellvertreter her.


Lösung: VUSTX Backfill

Ich habe die Historie von TLT (iShares 20+ Year Treasury Bond) mit den täglichen Renditen des VUSTX (Vanguard Long-Term Treasury Fund) bis zum Jahr 1999 verlängert.


End-Differenz: nur -1,57 % über 7 Jahre.

attachment

Und nein, da ist kein Sprung im Kurs, nur ein schneller Kursanstieg.

5x TLT:

Hebel: 5

TER: 0.75%

Zins-Spread: 2.0% (Erhöht, da die Optionen/ETP sehr kein ist).

attachment

Das ist bis jetzt das wackeligste Produkt - alles in allem aber noch völlig okay.


Öl (WTI)

Hier bin ich erneut auf einge Probleme gestoßen. Der Ölpreis ist nicht gleich Ölpreis. Es gibt ja Spot-Preise und Future-Preise und dann gibt es ja noch die Rollkosten. Das Problem: Indizes, in denen die Rollkosten bereits enthalten sind, sind nicht ohne weiteres bis 2000 verfügbar. Daher habe ich die Rollkosten dynamisch basierend auf dem Spread zwischen Spot und USO (ETF) berechnet.


Hier die historischen Rollkosten (Positiv = Verlust/Drag, Negativ = Gewinn/Yield):

Von 2006 bis 2008 sank das Contango von 12,95 % auf 2,59 %, bevor 2009 das Super-Contango (61,01 %) folgte. Zwischen 2010 und 2013 fielen die Kosten von 15,26 % auf 1,26 %, worauf 2014 eine erste Backwardation (-3,66 %) folgte. 2015 und 2016 stiegen die Werte wieder auf bis zu 39,40 %, sanken 2017 auf 10,48 % und drehten 2018 kurz ins Negative (-4,81 %). Nach 1,15 % in 2019 verursachte Corona 2020 erneut 47,10 % (Super-Contango). Seit 2021 hält die Backwardation an, mit Werten von -9,94 % (2021), dem Rekordtief von -22,37 % (2022) und weiteren Negativwerten bis -13,00 % (2025).


Wie man sieht, schwanken die Kosten extrem. In Krisen (2009, 2020) explodieren die Rollverluste, während in Knappheitsphasen (2022) sogar Gewinne durch Backwardation erzielt werden. Eine statische Annahme wäre hier fatal.


3x Oil:

Hebel: 3

TER: 0.99%

Zins-Spread: 1.5%

attachment

Kommentar: Öl sollte vielleicht nur als Warnhinweis dienen und nicht als Kern-Asset genutzt werden - aber das werde ich in Teil 2 genauer beleuchten, gerade ist das nur so eine Idee von mir. (Ja mir ist bewusst das in der 3xGTAA nur 2xWTI enthalten ist)


Euro Stoxx 50

Um ehrlich zu sein ist das hier das nerfigste Asset von allen es gibt den Euro Stoxx 50 nur als Kurs Index und nicht als Net Total Return. Dafür musste ich zu aller erst die Dividenen des Index reahcshiernen und dann somit den NET Total Return synthetisieren.


Gesagt getan dannach folgt der übliche prozess - Falsch gedacht. Hierbei muss man explizit daruf achten das man den Index in EUR hebelt und dann in USD umwandelt und nicht erst in USD umwandelt und dann hebelt.


Wieso: Würde man den bereits in USD umgerechneten Index hebeln (3x), würde man auch den Währungseffekt verdreifachen (3x Equity + 3x FX).

Wir wollen aber das Verhalten eines ungehedgten ETFs simulieren: 3x Equity Performance + 1x Währungseffekt. Daher muss erst der Index in Lokalwährung (EUR) gehebelt werden, bevor das Ergebnis einmalig in USD konvertiert wird.


3x Euro Stoxx 50:

Hebel: 3

TER: 0.8%

Zins-Spread: 0.7%

attachment

Was folgt als Nächstes?


In Teil 2 werden wir uns dann den eigentlichen Backtest ansehen und die Performance der Strategie analysieren und ggf. optimieren - das wird aber erst in ein paar Wochen passieren, da ich noch ein paar Sachen vorbereiten muss. Vielleicht werde ich vorher noch ein paar Worte zu Schwarzen Schwänen und dem Survivorship Bias verlieren, da dies ja auch ein wichtiger Teil jeder Hebelstrategie ist.


Ich hoffe euch hat dieser kleine Einblick in die Welt der synthetischen Daten gefallen.


PS: @Krush82 Dein Momentum Modell werde ich auch noch backtesten und euch die Ergebnisse präsentieren. Dafür reicht die Datenqualität von öffentlichen APIs leider nicht aus (zu unreine Daten und gedelistete Aktien sind häufig nicht mehr verfügbar) - daher werde ich dafür wohl Geld in die Hand nehmen müssen 😐. Ich werde versuchen, das alles schnell in einem Rutsch nach der 3xGTAA Analyse zu machen.

97
37 Kommentare

Profilbild
Schön dass du dir die Arbeit und Mühe machst den ganz großen Backtest auf die Beine zu stellen. Ich denke es sind eine Menge Leute auf das Ergebnis gespannt. Und natürlich freue ich mich auch dass du mein Modell nochmal backtesten möchtest. Aber bring erstmal das 3xGTAA Projekt zu Ende :-)
11
Profilbild
Ich bin sehr gespannt. Danke für die Mühe. Dieser @Epi hat zwar selbst einen Backtest durchgeführt, aber traue nie einer Statistik, die du nicht selbst gefälscht hast 😁
6
Profilbild
@DonkeyInvestor Warum machst du dann keinen Backtest?
Oder verstehst du darunter nur einen Test deines Rückens?
2
Profilbild
@DonkeyInvestor Ja, aber die Annahme von pauschal 3% Zinskosten ist sehr Wackelig. Vor allem bei Öl und den Währungen.

Zudem gibt es selbst dann nur Backtests mit Teilen der Assets bis 2000.

@Epi korregieren mich wenn ich da falsch liege.
2
Profilbild
@Epi warum Rücken? Ich teste das Gebäck meiner Frau doch regelmäßig. Wenn ich deines auch noch teste, werde ich noch fetter.
3
Profilbild
@DonkeyInvestor Ah, jetzt ergibt dein Kommentar oben Sinn. 👍
1
Profilbild
@Jesko Du hast grundsätzlich Recht. Solche Backtests brauchen ja regelmäßig vereinfachende Annahmen. Wichtig scheint mir, dass sie ungefähr eine Ahnung davon geben, wie sich ein Modell in bestimmten Situationen verhält. Ganz genau kennt man die Zukunft eh nicht.
Profilbild
@Jesko du hast mich überzeugt. Wie nennt sich dein Wikifolio? Ich kaufe 🤪
1
Profilbild
@Iwamoto Ganz ruhig mit den jungen Pferden - der Backtest selbst steht noch nicht mal ganz. =D
1
Profilbild
Top! Danke für die Mühe. Ich bin gespannt auf die Ergebnisse deiner Backtests, auch wenn in den Bau des Modells noch ein wenig mehr eingeflossen ist als der Blick in den Rückspiegel.
Es gab ähnliche Modelle, die zwar bessere Performancewerte hatten aber entweder weniger stabil (kleine Änderungen der Parameter = große in den Ergebnissen) oder ökonomisch weniger plausibel waren.
Auch muss man beachten, dass der Einfluss von BTC nicht unerheblich ist.

Aber das kannst du dir sicher schon alles denken. Daher: 👍
6
Profilbild
@Epi Genau dafür mache ich das, damit man mal genauer rein schauen kann. Die gesamten Tests sind vollständig in Python und das ermöglicht ganz neuer Möglichkeiten was Informations Beschaffung abgeht.

Gesamter Verlust eines Assets.
Der Kurs eines Assets nur wenn die 3xGTAA ihn hält.
Auswirkungen von verschiedenen SMA dauern
Verschiedene Dual Momentum Ranking Methoden
Einbau eines Täglich SMA checks, wenn das Momentum weg bricht.

Der Fantasie sind da nur wenige Grenzen gesetzt.

Das erste Resultat ist schon da und das sieht bis 2017 nicht umwerfend aus - ich denke gerade habe ich noch eine Falsche Annahme. Gerade wähle ich die Assets wie folgt aus.
1: Das Asset muss über seiner 150 Tages SMA stehen
2: Sortieren nach dem 1M + 3M + 6M +9M Momentum

Ist da eine Fehlannahme drin?
1
Profilbild
@Jesko Lass mich überlegen. Antwort kommt später.
1
Profilbild
@Epi Ich hatte nur einen Fehler in meinem Code – trotzdem bitte einmal meine Annahmen kontrolliern.
1
Profilbild
@Jesko Die Annahmen scheinen mir korrekt. Ergänzen würde ich die Regel, ob Cash Teil des Assetpools ist oder gesondert behandelt wird.
1
Profilbild
Stark! Der Stoff reicht für ne Bachelorarbeit 😉
Bin auch sehr interessiert an deinen Auswertungen 👍🏼
Wenn du einen Co-Sponsor benötigst für die Daten des Einzelaktien-Tests, melde dich. Ich bin bei meinen Tests nur sehr oberflächlich unterwegs, weil der Deepdive richtig Zeit frisst.
2
Profilbild
@Wealth-Accelerator zu Sponsoren sage ich nicht nein. =)
1
Profilbild
1
Profilbild
Ich bin gespannt. Insbesondere auf Pre BTC-Zeiten. Daher spendier ich dir ein paar Münzen, die ich seinerzeit von @DonkeyInvestor bekommen habe. Also eig. Hast du nur seine bekommen.

Ich bin großer Fan von Daten. Je weiter zurück desto besser. Insbesondere, wenn man diese backtests auf bestehende Modelle anwendet. Dann findet man schnell heraus, ob nicht vielleicht overfitting durchgeführt wurde.

@Epi du hattest ja auch mal welche gemachte gingen die weniger weit zurück?
1
Profilbild
@SchlaubiSchlumpf Bis jetzt denke ich, dass ich noch einen kleinen „Fehler" in meiner Momentumberechnung habe. Was ich aber schon sagen kann, ist das lieber bei allen Assets beim dreifachen Hebelschluss sein sollte. 5x und 7x explodiert zu häufig - schwarze Schwäne und So.
Profilbild
@Jesko, was zeigen deine bisherigen Backtests? Zeitraum 2017-2027, CAGR ~ 15%, mit MaxDD um die 40%? Das Modell lief eigentlich erst ab 2021/22 so wirklich mega nach eigenen Tests. Momentum 1M+3M+6M+9M mit SMA 150 lief zudem generell schlechter als SMA 200 mit 1+3+5+8+10 lookback. Allerdings habe ich nur die Daten von yfinance genutzt und von einer synthetischen Replizierung abgesehen.
1
Profilbild
@fastlane Erstmal vorweg ich bin noch nicht mit der QS des Codes fertig und nutze gerade nur 3x Assets auch die Währungen und TLT, desweiteren nehme ich nehme mal an, dass du die Performance von 2007 bis 2017 meinst.
Außerdem berücksichtigte ich schon eine Gebühr eines Wikifolios (0,95% + 5% high watermark) und Spreads 0,2% pro Handel.
Strategy Results (2007-01-01 - 2017-12-31):
CAGR (USD): 9.12%
CAGR (USD, After Tax): 6.72%
CAGR (EUR): 10.13%
CAGR (EUR, After Tax): 7.46%
Max Drawdown (USD): -52.19%
Max Drawdown (EUR): -54.24%
Final Value (USD): 26099.53
Final Value (EUR): 21762.31
1
Profilbild
@fastlane Ich habe gerade nochmnal kurz einen lauf mit 7xForex und 5xTLT gemacht:
Strategy Results (2007-01-01 - 2017-12-31):
CAGR (USD): 8.84%
CAGR (USD, After Tax): 6.51%
CAGR (EUR): 9.85%
CAGR (EUR, After Tax): 7.25%
Max Drawdown (USD): -63.36%
Max Drawdown (EUR): -65.13%
Final Value (USD): 25374.14
Final Value (EUR): 21157.46
1
Profilbild
@fastlane Das Problem an den Währungen ist, dass man hier den Hebel etwas anders berechnen muss als bei anderen Assets. Siehe dazu die beiden Formeln in Bild 1 des Beitrags. Wenn man das nicht macht, stehen diese bedeutend besser da, als sie eigentlich sind. Auch unabhängig davon würde ich keinen 7x Hebel nutzen, die machen mit genug Zeit immer alles kaputt.
1
Profilbild
Großartig. Danke 👍
1
Profilbild
Wahnsinn! Starke Arbeit!
1
Erstmal vielen dank für die Arbeit. Ich hätte eine Kleinigkeit einzubringen. Falls du die Zeit hast, kannst du dir mal die Library plotly anschaun. Hab früher auch matplotlib verwendet, finde die interaktiven Dinger die man mit plotly basteln kann aber ganz praktisch und bin eingentlich mittlerweile komplett umgestiegen.
1
Profilbild
@Lukas10999 Schau ich mir mal an, danke für den Tipp!
Profilbild
1
Profilbild
Respekt für die Arbeit. Werde es gespannt verfolgen!
1
Profilbild
nice, hab auch grad ein 3xGTAA Backtest gemacht. Ich warte erstmal, was du für Ergebnisse bekommst. Ich habe auch synthetisch gehebelt, zwar weniger kompliziert, aber die Ergebnisse waren trotzdem sehr gut.
Mein Hebelmodell:
lev_pct = pct_change * lev - (lev - 1) * (0.035 / 252)
Also mit konstanter Refinanzierungsrate und ohne Rolling, TER

Die 3.5% sorgen für einen konservativen Hebel. Doe meisten ETFs laufen besser

Mein gesamter Backtest war ziemlich ernüchternd. Ich habe allerdings nicht das komplette Universum getestet, wenn deine Ergebnisse stark abweichen, werde ich es nochmal machen
1
Profilbild
@SemiGrowth heißt das im Endeffekt, dass 3xGTAA doch nicht so ein tolles Vehikel ist?
Profilbild
@Cyonix die Renditen sind ganz gut, doch. Aber der maximale Drawdown ist so tief, wie beim S&P 500 (50%). Epi hat nur monatliche Zahlen betrachtet. Auch ist das Handeln zu Monatsende sehr glücklich gewesen. Ich werde die Tage noch ein Post dazu machen
2
Profilbild
@SemiGrowth super danke dir 🫶🏻
Profilbild
@SemiGrowth Über Corona Monatlich zum 15ten zu bewerten klappt "Super".
1
Profilbild
@Jesko das ist das Ding. Ich habe alle Möglichkeiten getestet und den schlechtesten Zeitpunkt verwendet
1
Profilbild
@SemiGrowth ob du es glaubst oder nicht: Ich habe fast 1:1 den Test von dir für Spytips geschrieben, deswegen kenne ich die Werte.
1
Werde Teil der Community