Während wir im letzten Artikel das ultrastabile Portfolio von Dr. Andreas Beck analysiert haben, schauen wir uns jetzt die Indikatoren für eine Krise nach Andreas Beck genauer an, die zu einer Veränderung des investierten Kapitals führen.
Wie im aktuellen Whitepaper zur Beschreibung des ultrastabilen Portfolios dargestellt, werden 3 verschiedene Zustände des Systems unterschieden (sog. “Regimes”) 1, die zu unterschiedlichen Gewichtungen des investierten Kapitals führen.
Dabei erfolgt die Steuerung, in welchem Regime sich das Portfolio aktuell befindet, über folgende Krisen-Indikatoren:
- Aktienmarktverlust zum 3-Jahreshoch
- Volatilität am Aktienmarkt
- Risikoprämien bei Unternehmensanleihen
Mein Ziel ist jetzt, diese 3 Key Performance Indicators (KPIs) des ultrastabilen Portfolios in R
abzubilden, um so in Zukunft selbst schnell und einfach feststellen zu können, in welchem Regime wir uns befinden.
Am Ende des Posts zeige ich auch noch eine Möglichkeit, die Krisen-Indikatoren des Portfolios ganz ohne Programmierkenntnisse in der grandiosen App Portfolio Performance etwas vereinfacht umzusetzen.
Krisen-Indikatoren des Portfolios in R
abbilden
Für den Code verwenden wir diesmal eine RMarkdown-Datei. Damit ist es sehr einfach möglich, alle 3 Indikatoren übersichtlich auf einer Seite abzubilden, ggfs. noch erklärenden Text zu ergänzen und diesen dann z.B. als PDF oder HTML-Datei zu exportieren.
Als Vorbereitung laden wir noch ein paar benötigte Libraries:
library(tidyverse)
library(tidyquant)
library(plotly)
Indikator #1: Aktienmarktverlust zum 3-Jahreshoch
Für diesen Indikator verwenden wir den MSCI All Country World Index (ACWI), der alle Mid Caps und Large Caps der Welt inkl. der Schwellenländer enthält und somit einen guten Gradmesser für den gesamten Aktienmarkt darstellt.
Hierzu laden wir als erstes die historischen Kurse der letzten 3 Jahre. Als Kurslieferant verwenden wir diesmal Ariva, da diese sehr weit zurückreichende historische Daten zur Verfügung stellen.
min_time <- "1.3.2018"
max_time <- "1.3.2021"
tbl_timeseries <- read_csv2(paste("https://www.ariva.de/quote/historic/historic.csv?secu=105686722&boerse_id=8&clean_split=1&clean_payout=1&clean_bezug=1¤cy=EUR&min_time=", min_time, "&max_time=", max_time, "&trenner=%3B&go=Download", sep="")) %>%
select("Datum", "Schlusskurs") %>%
arrange(Datum)
Der Krisen-Indikator besagt, dass für den Übergang in das Krisen-Regime “Eigenkapitalknappheit” (Regime A -> B) der Aktienmarktverlust im Vergleich zum 3-Jahreshoch mehr als 20% betragen muss. Berechnen wir also das Maximum in diesen 3 Jahren:
all_time_high <- max(tbl_timeseries$Schlusskurs)
Als nächstes müssen wir diese historischen Kursdaten nur noch in eine Form überführen, so dass wir sie schön grafisch darstellen können:
p <- tbl_timeseries %>%
ggplot(aes(x = Datum, y = Schlusskurs)) +
geom_line() +
labs(x = "", y = "Price") +
theme_tq() +
scale_color_tq() +
scale_x_date(date_labels = "%Y-%m-%d") +
theme(legend.position = "none")
ggplotly(p +
geom_hline(yintercept=all_time_high, color = "red") +
geom_hline(yintercept=0.8*all_time_high, color = "green"))
Und so stellt sich das Ergebnis unseres ersten Krisen-Indikators Aktienmarktverlust am 1.3.2021 dar:

Die rote bzw. grüne horizontale Linie markiert jeweils den Höchststand bzw. 20% Verlust davon, d.h. das Signal, dass dieser Indikator erfüllt ist.
Indikator #2: Volatilität am Aktienmarkt
Auch die Volatilität stellen wir wieder anhand der täglichen Schwankungen des MSCI ACWI dar. Hierzu berechnen wir mit der Funktion periodReturn
die Renditen auf Tagesbasis:
p2 <- tbl_timeseries %>%
tq_transmute(select = Schlusskurs, mutate_fun = periodReturn, period = "daily") %>%
ggplot(aes(x = Datum, y = daily.returns)) +
geom_bar(stat = "identity", aes(fill = (abs(daily.returns) > 0.05))) +
scale_fill_manual(guide = FALSE, breaks = c(TRUE, FALSE), values=c(palette_light()[["red"]], "#EFEFEF")) +
labs(x = "", y = "Daily Returns") +
theme_tq() +
scale_color_tq() +
scale_y_continuous(labels = scales::percent) +
scale_x_date(date_labels = "%Y-%m-%d") +
theme(legend.position = "none")
ggplotly(p2)
Der Krisen-Indikator verlangt eine sprunghafte Erhöhung der Volatilität am Aktienmarkt. Im Ergebnis habe ich daher die täglichen Ausschläge über 5% rot markiert:

Indikator #3: Risikoprämien bei Unternehmensanleihen
Dies ist sicherlich der komplizierteste Krisen-Indikator im Vergleich zu den anderen beiden.
Im Folgenden schaue ich mir für diesen Indikator den Spread zwischen globalen Unternehmensanleihen mit Rating “Investment Grade” (IG) im Vergleich zu High Yield Unternehmensanleihen an, d.h. Hoch-Risiko-Anleihen. Für den Vergleich verwende ich 2 ETFs von iShares auf entsprechende Indizes, weil sich diese Daten gut auswerten lassen.
Hierfür laden wir als erstes die Kurse der beiden iShares-ETF mit den WKNs A0RGEP und A1C3NE wieder von der Ariva-Website:
tbl_timeseries_ig <- read_csv2(paste("https://www.ariva.de/quote/historic/historic.csv?secu=101756953&boerse_id=8&clean_split=1&clean_payout=1&clean_bezug=1¤cy=EUR&min_time=", min_time, "&max_time=", max_time, "&trenner=%3B&go=Download", sep="")) %>%
select("Datum", "Schlusskurs") %>%
arrange(Datum)
tbl_timeseries_high_yield <- read_csv2(paste("https://www.ariva.de/quote/historic/historic.csv?secu=103419256&boerse_id=8&clean_split=1&clean_payout=1&clean_bezug=1¤cy=EUR&min_time=", min_time, "&max_time=", max_time, "&trenner=%3B&go=Download", sep="")) %>%
select("Datum", "Schlusskurs") %>%
arrange(Datum)
Als nächstes berechnen wir die Kursdifferenz der beiden ETFs und stellen diese grafisch dar:
p <- left_join(tbl_timeseries_ig, tbl_timeseries_high_yield, by="Datum") %>%
mutate(Schlusskurs = Schlusskurs.x - Schlusskurs.y) %>%
ggplot(aes(x = Datum, y = Schlusskurs)) +
geom_line() +
labs(x = "", y = "Spread") +
theme_tq() +
scale_color_tq() +
scale_x_date(date_labels = "%Y-%m-%d") +
theme(legend.position = "none")
ggplotly(p)
Der Indikator verlangt laut dem Whitepaper eine Ausweitung der Risikoprämien, wie sich in unserer generierten Grafik zeigt:

Zeitliche Abfolge am Beispiel des Corona-Crashes
Insbesondere bei den Indikatoren #2 und #3 besteht natürlich eine gewisse Flexibilität zur Bestimmung des exakten Zeitpunkts für den Wechsel von Regime “Normal” zu “Eigenkapitalknappheit”. Während sich der erste Indikator Aktienmarktverlust größer 20% sehr genau bestimmen lässt und knüpft Andreas Beck die Volatilität und den Spread in seinem veröffentlichten Whitepaper nicht an harte Zahlen.
Schauen wir uns daher abschließend am Beispiel des Spreads noch kurz die zeitliche Abfolge an und vergleichen diese mit unseren generierten Grafiken.
Als erstes schlägt der Volatilitäts-Indikator an: ab 9.3.2020 ist hier ein sprunghafter Anstieg zu sehen – erkennbar an den roten Balken im Graphen. Am selben Tag greift auch der erste Indikator, weil der Aktienmarktverlust gegenüber dem Dreijahreshoch vom 19.2.2020 mehr als 20% beträgt, wie der Schnittpunkt der grünen Linie im Diagramm deutlich zeigt.
Trotzdem wurde der Wechsel von Regime A nach B noch nicht vollzogen, da der dritte Indikator, die Anleihe-Spreads, noch nicht auffällig war (siehe Whitepaper Seite 31). In unserem interaktiven Plot zu den Spreads (Indikator #3) in RStudio kann man sehr schön ablesen, dass der Spread am 9.3.2020 mit 38,41 nur leicht über dem Durchschnitt lag. Laut dem Whitepaper wurde dann einige Tage später am 15.3. auch dieser Indikator gerissen, so dass der Regime-Wechsel im Portfolio am 20.3.2020 vollzogen wurde.
Krisen-Indikatoren in Portfolio Performance abbilden
Für alle, die nicht programmieren möchten oder noch etwas Respekt vor dem R-Code haben, zeige ich hier einfachere Möglichkeit, die Krisenindikatoren abzubilden. Dafür verwende ich die kostenlose App Portfolio Performance und erstelle ein neues Performance-Dashboard.
Im Wesentlichen verwende ich für das Dashboard vier Elemente:
- jeweils 1 Diagramm für jeden Krisenindikator
- mindestens 1 Limit auf den breiten Aktienmarkt, z.B. einen ETF auf den MSCI ACWI
Für den ersten Krisenindikator – Abweichung von mind. 20% zum 3-Jahres All-Time-High des breiten Aktienmarkts – verwende ich den ETF von iShares IE00B6R52259 auf den MSCI ACWI. Natürlich kann hier aber auch der MSCI ACWI direkt verwendet werden, wenn ihr entsprechend gute Kursdaten dazu findet.
Eine Möglichkeit ist es, die Chartentwicklung des ETF darzustellen und zusätzlich ein Limit auf das aktuelle All-Time-High des ETF/Index zu setzen. Das All-Time-High der letzten 3 Jahre muss man dabei manuell z.B. über das Chart in Portfolio Performance herausfinden, da die Limit-Funktion nur mit statischen Werten arbeiten kann.
Anschließend füge ich die entsprechenden Widgets „Wertpapiere: Limit überschritten“ und „Performance-Diagramm“ ein und sehe so sehr schnell, wie weit vom letzten All-Time der ETF oder Index aktuell entfernt ist. Dazu ist es zudem noch wichtig, in der Konfiguration des Limit-Attributs in Portfolio Performance die Option „Relativen Abstand anzeigen“ zu aktivieren.
Eine zweite und bessere Alternative ist das neue All-Time-High (ATH) Widget in Portfolio Performance, das ich zur Entwicklung beigesteuert habe. Dieses findet sich unter Neues Widget > Allgemein > Wertpapier: Abstand vom ATH. Anschließend kann einfach der oben genannte iShares ACWI-ETF als Datenreihe ausgewählt werden und das Widget zeigt den prozentualen Abstand zum ATH an. Der Nachteil hierbei ist natürlich, dass es nur eine Momentaufnahme ist und keinen historischen Verlauf zeigt.

Für den zweiten Krisenindikator füge ich den CBOE Volatility Index (VIX) als neues Wertpapier hinzu und erstelle das Benchmark-Diagramm. Die Kursdaten des ^VIX
können zum Beispiel über Yahoo bezogen werden.
Den dritten Krisenindikator – der Spread bei den Corporate Bonds – habe ich zusammen mit dem VIX-Index (rote Linie) in einem Diagramm kombiniert. Hierzu nutze ich – wie von Andreas Beck schon in mehreren Youtube-Videos gezeigt – die Kursdaten des CSI BBB Index (orange Linie) , der den Renditeaufschlag von Unternehmensanleihen mit BBB-Rating (gerade noch so Investment Grade) gegenüber sicheren US-Staatsanleihen nachbildet. Die absoluten Werte sind mir in diesem Fall egal, da es ja nur darum geht, zu erkennen, ob ein sprunghafter Anstieg erfolgt. Die CSV-Daten lassen sich momentan leider nur manuell in Portfolio Performance importieren.
Das Ergebnis in Portfolio Performance sieht dann Stand 8.8.2023 z.B. folgendermaßen aus. Ich denke, man sieht auf diesem Dashboard in der Portfolio Performance App sehr schnell auf einen Blick wie der Markt aktuell einzuschätzen ist und ob wir uns nach der Definition von Andreas Beck in einer Krise befinden oder nicht:

Wenn Du auf der Suche nach weiteren, interessanten Reports in Portfolio Performance bist, schau Dir gerne meine anderen Blog-Posts an.
Ergebnis
Im Ergebnis sieht man sehr schön, dass für die letzten 3 Jahre die Corona-Krise im März 2020 eine Krise im Sinne des Regimes “Eigenkapitalknappheit” (Regime A -> B) des ultrastabilen Portfolios von Dr. Andreas Beck ist.
Dies zeigen alle 3 Krisen-Indikatoren in den grafischen Auswertungen sehr deutlich. Mit dieser Anleitung lassen sich die Indikatoren sehr gut in R
nachvollziehen und für zukünftige Krisen nutzen.
- siehe PDF-Whitepaper “Erfolgreich wissenschaftlich investieren” von Dr. Andreas Beck, Seite 27.
Schreibe einen Kommentar