HFEA steht für HEDGEFUNDIE's Excellent Adventure.
Von vorn lesen: Kapitel 1 Die RegelGehebelte ETFs können in kurzer Zeit einen großen Teil ihres Werts verlieren.
Das öffentliche Repository auf GitHub enthält Beispielpakete mit erfundenen Daten, einem kurzen Python-Skript und der Referenzausgabe. Wer das Skript ausführt, erhält die Referenzausgabe Zeile für Zeile.
Was im Repository liegt
examples/rebalancing/input.csv: die Eingabe mit erfundenen Kursen beider Seiten und den Werten je Lauf.examples/rebalancing/recompute.py: das Skript, das die Regel Tag für Tag rechnet.examples/rebalancing/output.csv: die Referenzausgabe des Skripts.examples/rebalancing/README.md: Spalten, Schritte und Grenzen des Pakets.examples/leverage-model/input.csv: die Eingabe mit erfundenen Indexrenditen, Zinsen und Kosten.examples/leverage-model/recompute.py: das Skript, das den Kurs eines gehebelten Produkts Tag für Tag rechnet.examples/leverage-model/output.csv: die Referenzausgabe des Skripts.examples/leverage-model/README.md: Spalten, Schritte und Grenzen des Pakets.
Maschinenlesbare Übersicht: llms.txt.
Lokal ausführen
Nötig ist Python 3; das Skript nutzt nur die Standardbibliothek, eine Installation braucht es nicht.
git clone https://github.com/Andre0512/letf-strategies.git
cd letf-strategies/examples/rebalancing
python3 recompute.py input.csv > ergebnis.csv
diff ergebnis.csv output.csv
Gibt diff nichts aus, stimmt jede Zeile. Dieselben Zeilen gelten in
examples/leverage-model.
Die Rechnung in Kurzform
Der erste Block zeigt die Schritte der Regel, Handelstag für Handelstag. Der zweite Block zeigt das Hebelmodell des zweiten Pakets; der Backtest der Seite nutzt es nicht.
# Kurse sind um Splits und Ausschüttungen bereinigt.
am ersten Tag: Kauf beider Seiten zum Zielgewicht
für jeden Handelstag t:
wert = Stücke Aktien * Kurs Aktien + Stücke Anleihen * Kurs Anleihen
anteil_aktien = Stücke Aktien * Kurs Aktien / wert
Regel termin (Backtest der Seite): die Fristen sind feste Termine, der 1.
jedes Monats, dessen Abstand zum Januar ein Vielfaches von
ABSTAND_MONATE ist, bei 3 also 1. Januar, April, Juli und Oktober;
die erste Frist ist der erste Termin nach dem ersten gemeinsamen Tag,
jede weitere der nächste Termin nach dem ausgeführten;
ohne Kurs am Termin zählt der nächste gemeinsame Kurstag
Regel termin: Rebalancing, sobald die Frist erreicht ist
Regel termin_und_band: Frist ABSTAND_MONATE nach dem letzten Rebalancing;
Rebalancing nur, wenn Frist und Band erreicht sind
(Beispiel im Paket, der Backtest der Seite nutzt es nicht)
beim Rebalancing: neue Stücke beider Seiten zum Zielgewicht
# Hebelmodell je Handelstag, vom Backtest der Seite nicht genutzt
tage = Kalendertage seit dem Vortag
brutto = 1 + HEBEL * Tagesrendite des Index
ter = 1 - TER * tage / 365
finanzierung = 1 - (HEBEL - 1) * (Zinssatz + Aufschlag) * tage / 360
nur bei HEBEL über 1, sonst finanzierung = 1
kurs = kurs_vortag * brutto * ter * finanzierung * weitere Faktoren
Die Parameter
Mit diesen Werten rechnet die Seite, wenn niemand sie ändert:
GEWICHT_AKTIEN = 55 # Prozent, US-Fassung; 50 Prozent in der EU-Fassung
ABSTAND_MONATE = 3 # Kalendermonate zwischen zwei Fristen
BAND = keins # die Seite rebalanciert nur nach Frist
Deine Fassung kann diese Werte ändern: einen Abstand von 1, 3, 6 oder 12 Monaten und ein Aktiengewicht zwischen 30 und 80 Prozent.
Datenregeln
- Handelskalender: Gerechnet wird an gemeinsamen Handelstagen beider Seiten; fehlt ein Kurs, rechnet die Seite an diesem Tag nichts. Fällt eine Frist auf einen Feiertag, rückt sie auf den nächsten gemeinsamen Handelstag.
- Splits und Bereinigung: Beide Kursreihen sind um Splits und Ausschüttungen bereinigt.
- Nachbau vor der Auflage: Die Seite rechnet nur mit echten Kursen der Produkte; einen Nachbau vor der Auflage gibt es hier nicht.
- Währung: Weicht die Währung eines Produkts von der des Index ab, rechnet ein Wechselkurs sie für abgeleitete Fassungen um.
Die Spalten
Die Eingabe nennt je Lauf die Regel, das Zielgewicht der Aktien, den Abstand der Termine und das Band, dazu je Handelstag die Schlusskurse beider Seiten. Die Ausgabe enthält unter anderem diese Spalten:
| Spalte | Bedeutung |
|---|---|
run |
Nummer des Laufs |
rule |
Regel des Laufs: termin oder termin_und_band |
date |
Tag der Zeile, nur Tage, an denen beide Produkte einen Kurs haben |
stock_shares |
Stückzahl der Aktienseite nach dem Handel des Tages |
bond_shares |
Stückzahl der Anleiheseite nach dem Handel des Tages |
quote_before_percent |
Aktienquote vor dem Umschichten, in Prozent |
deadline |
Frist, die nach dem Handel des Tages gilt |
band_breached |
ob der Abstand zum Zielgewicht das Band erreicht |
value_strategy |
Wert der Strategie, Start bei 100 |
value_hold |
Wert ohne Umschichten, Start bei 100 |
Alle Spalten mit Einheit und Zeitbasis stehen im README des Pakets.
Warum zwei Pakete
rebalancing zeigt die Regel: Zielgewicht, Termine und Band, und welche
Wertkurve daraus folgt. leverage-model zeigt den täglichen Reset der
gehebelten Produkte. Der Backtest dieser Seite nutzt nur echte Schlusskurse,
ohne Nachbau vor der Auflage.
Warum erfundene Daten
Indexstände und Produktkurse gehören Indexanbietern und Datenlieferanten; ihre Lizenz erlaubt nicht, sie in ein öffentliches Repository zu legen. Deshalb sind alle Zahlen erfunden: eine Formel mit wenigen gesetzten Tagen, die jeden Fall einmal vorführen, den Termin auf einem Wochenende und das Band. Sie sagen nichts über einen Markt oder ein Produkt. Wer eigene Kurse hat, setzt sie in dieselbe Spaltenform ein.
Was die Seite genauso rechnet
Mit denselben, um Splits und Ausschüttungen bereinigten Schlusskursen beider Produkte, an Tagen, an denen beide einen Kurs haben, und ab dem ersten gemeinsamen Tag rechnet die Seite dieselbe Wertkurve. Rohe Schlusskurse weichen ab jedem Ausschüttungstag ab.
Bei quartalsweisem Rebalancing rechnet die Regel mit dem ersten Handelstag jedes Quartals (allgemein: dem ersten Handelstag jedes Terminmonats). Das ist eine Konvention, keine Empfehlung.
Acht Tage aus dem ersten Lauf des Pakets, mit 60 % Aktien und Terminen alle drei Monate. Der Termin 1927-01-01 fällt auf einen Samstag, umgeschichtet wird am Montag, 1927-01-03, und die nächste Frist ist der Termin 1927-04-01.
Alle Zahlen sind erfunden. Werte seit dem Start bei 100.
| Datum | Kurs Aktie | Kurs Anleihe | Aktienquote vor (%) | Wert der Strategie |
|---|---|---|---|---|
| 1926-12-24 | 111.00 | 43.80 | 60.33 | 116.80 |
| 1926-12-27 | 113.00 | 44.20 | 60.54 | 118.50 |
| 1926-12-28 | 112.50 | 43.50 | 60.81 | 117.44 |
| 1926-12-29 | 111.50 | 43.10 | 60.82 | 116.38 |
| 1926-12-30 | 112.80 | 43.40 | 60.93 | 117.52 |
| 1926-12-31 | 114.00 | 43.90 | 60.91 | 118.81 |
| 1927-01-03 (umgeschichtet) | 115.00 | 44.50 | 60.79 | 120.08 |
| 1927-01-04 | 115.80 | 44.50 | 60.17 | 120.58 |