Direkt zum Hauptbereich

Der Sturz der Wirecard-Aktie - eine Analyse



Das Drama der letzten Tage um Wirecard wurde schon mit einigen Superlativen beschrieben. "Einzigartig" ist eine der treffenden Zuschreibungen. Hintergrund ist, dass Wirecard als Finanzdienstleister Rücklagen braucht, um für die Zahlungen über die eigene Plattform bürgen zu können. Von einem Teil dieser Rücklagen fehlt nun jede Spur - die nächsten Wochen werden wohl zeigen, was an den vielen Betrugsvorwürfen gegen Wirecard und/oder gegen dessen Geschäftspartner dran ist.

Dies beiseite, ist der Fall ein willkommener Anlass für mich, um mich mit der Aktienanalyse und vor allem mit dem R-Paket quantmod() zur Aktienanalyse näher auseinanderzusetzen. Denn die Ereignisse spiegeln sich im Aktienkurs wider:
Um dies in Relation zu setzen, habe ich die Aktie der Lufthansa-Aktie gegenübergestellt. Auch über diese wurde in den vergangenen Wochen viel berichtet - wohlgemerkt aus ganz anderen Gründen. Beide Aktienkurse habe ich in Relation zum 24.09.2018 gesetzt - dem Tag, als Wirecard in den DAX aufgenommen wurde - um eine Vergleichbarkeit zu erreichen. Es zeigt sich das Ausmaß des extremen Absturzes der Wirecard-Aktie:

Die Aktiendaten bekommt man sehr einfach über das Packet quantmod() in die R-Umgebung. In diesem Falle von yahoo.Finance von wo ich den Ticker für Wirecard - also WDI.DE - herbekam. Über folgenden Befehl werden die Daten geladen. Schließlich wird Name der Datendatei ausgegeben, über welchen die Daten abgerufen werden können.

Die Standard-Visualisierung im Packet hat große Ähnlichkeiten zu einem Bloomberg-Terminal (an dieser Stelle sei angemerkt, dass quantmod() aber keine Gewähr für die Daten übernimmt!). Interessant ist auch das angestiegene Handelsvolumen das mit dem Preisverfall einhergeht.

Das Paket ermöglicht auch die Widergabe von barcharts und Preisbalken mit High, Low, Open, Close und Open und roter/grüner Farbgebung abhängig vom Verhältnis zum Close am Vortag.

Mit dem Paket können wir zudem weitere Analysen anstellen. Mit einer neuen Periodizität können wir den Verlauf zB nach Wochen oder Monaten betrachten und so ein besseres Gefühl für den allgemeinen Trend zu bekommen:


Das quantmod()-Paket enthält viele Zusatzfunktionen zur Chartanalyse. Anbei sind nur ein paar ausgewählte angewendet:
- Moving Average: zur Identifizierung des Trends
- Bollinger Band: Ein Kurs nahe des oberen Bands wir als Signal für eine Bewegung zum anderen Band gedeutet und vice versa. Der Sturz der Wirecard-Aktie ist außerhalb der Bänder, also außergewöhnlich.
- Strength Indicator: setzt die Auf- und Abwärtsbewegungen zueinander ins Verhältnis. Ein Wert über 70 wird als Signal für einen überkauften Markt und unter 30 als Signal für einen überverkauften Markt gedeutet. Diese Aktie ist also überkauft; was auch plausibel ist, da Investoren ihre Positionen los werden wollen.
- Welles Wilder´s Directional Movement Indicator: die rote Linie zeigt die selling pressure und die grüne die buying pressure. Die blaue Linie (die Differenz) zeigt die Bewegung im Preis an. Hier wird die Dominanz des selling pressures (rote Linie über der grünen, blaue Linie mit niedrigem Wert) gut deutlich.
- Chaiken Money Flow: Volumenindikator, welcher den Closing-Price in Relation zum Volumen stellt. Wohin fließt das Geld rein oder raus? Hier eindeutig raus.
Die Kursanalyse kann und wird teils sehr viel ausführlicher betrieben - die auskommentierten Befehle zeigen die weiteren Funktionen. Nimmt man aber an, dass Aktienkurse ein random walk sind, so wird man in den Grafiken zur Chartanalyse keinen Mehrwert finden; auch ich bin kritisch, inwiefern die Chartanalyse die ganze Wahrheit wiedergeben kann.




Wir können auch weitere Analysen aufstellen, und zB die prozentuelle Veränderung oder den return betrachten. Auch diese Grafiken zeigen, wie außergewöhnlich der Verlauf des Wirecard-Aktienkurses der letzten Tage ist.


Foto von Pixabay von Pexels

Und hier noch der Code in RStudio
library(quantmod)
library(dplyr)
library(ggplot2)
library(tidyr)

# Aktiendaten laden
getSymbols("WDI.DE",src="yahoo", from="2018-09-24") # Wirecard im Dax seit 24.September 2018
getSymbols("LHA.DE",src="yahoo", from="2018-09-24") 
# als Dataframe
Wirecard_data <- data.frame(date=index(WDI.DE), coredata(WDI.DE$WDI.DE.Adjusted))
Lufthansa_data <- data.frame(date=index(LHA.DE), coredata(LHA.DE$LHA.DE.Adjusted))
joined_data <- merge(Wirecard_data, Lufthansa_data, by="date")
joined_data <- joined_data %>%
  `colnames<-`(c("Datum", "Wirecard_adj", "Lufthansa_adj")) %>%
  mutate(Wirecard_rel = Wirecard_adj/first(Wirecard_adj)) %>%
  mutate(Lufthansa_rel = Lufthansa_adj/first(Lufthansa_adj))
# Plot 1 - Aktie Wirecard - absolut
joined_data %>%
  ggplot(aes(x=Datum, y=Wirecard_adj, colour="Wirecard")) +
  geom_line() +
  scale_colour_manual("", 
                      breaks = c("Wirecard"),
                      values = c("#FF8000")) +
  scale_y_continuous(limits = c(0,200)) +
  theme_minimal() +
  theme(axis.title.x=element_blank(), axis.title.y=element_blank()) +
  labs(
    title = paste("die Wirecard Aktie"),
    subtitle = "im Dax seit 24.September 2018",
    caption = "Plot 1")
# Plot 2 - Aktie Wirecard & Lufthansa - relativ
joined_data %>%
  ggplot(aes(x=Datum, y=Wirecard_adj)) +
  geom_hline(yintercept = 1, color="grey") +
  geom_line(aes(y=Wirecard_rel, colour="Wirecard"))+
  geom_line(aes(y=Lufthansa_rel, colour="Lufthansa"))+
  scale_colour_manual("", 
                      breaks = c("Wirecard", "Lufthansa"),
                      values = c("#FF8000", "#0080FF")) +
  scale_y_continuous(labels = scales::percent, limits = c(0,1.2)) +
  theme_minimal() +
  theme(axis.title.x=element_blank(), axis.title.y=element_blank()) +
  labs(
    title = paste("die Wirecard & Lufthansa Aktie"),
    subtitle = "relative Performance seit September 2018",
    caption = "Plot 2")


## das quantmod()-package

# 1) Aktiendaten laden -> Objektnamen mit Daten wird wiedergegeben
getSymbols("WDI.DE",src="yahoo", from="2018-09-24") #weitere Quelle "FRED"

# 2) Visualisierung
chartSeries(WDI.DE, name="Plot 3 - Wirecard")
barChart(WDI.DE, bar.type='ohlc', subset='2020-05::2020',  name="Plot 4 - Wirecard") #Preisbalken mit High, Low, Close in grün/rot nach Verhältnis zu Close am Vortag // bar.type='ohlc' inkl Open
## subsetting with '2020::' seit 2020 bis jetzt // '2007-06::2008-01-12' 07.Juni.2007 bis 01.Dez.2008 // non.contiguous <- c('2007-01','2007-02','2007-12') & WDI.DE[non.contiguous] 

periodicity(WDI.DE) #Daten weekly, daily, or hourly?
#chartSeries(to.weekly(WDI.DE), theme="white", name="Plot 5 - weekly") #to.weekly // to.monthly // to.minutes5 // to.minutes10
reChart(major.ticks='months', name="Plot 6 - zoom in") + #reChart to modify the original chart## mit anderer Zeitskala // siehe ndays(), nweeks(), nyears()
  zoomChart("last 2 months") # zoom in

# 3) Kursanalyse
chartSeries(to.weekly(WDI.DE), type="line", theme="white", up.col='blue', TA=NULL, name="Plot 7 - analysis")  #draw the chart
addBBands() #Bollinger Bands for volatility - quiet market & bands contract // loud market &  bands expand.
addSMA(col = "#003366") #Simple Moving Average for smoothing & basic forecasting
addRSI() #Relative Strength Indicator for measuring speed & change of price movements - overbought when above 70 and oversold when below 30.
addADX() #Welles Wilder's Directional Movement Indicator - selling pressure (-DI), buying pressure (+DI), DX line with difference
# +DI line above the -DI line -> more upward than downward movement in price, else downward movement
addCMF() #Chaiken Money Flow - wohin fließt das Geld (rein oder raus)
#addATR() #Average True Range
#addBBands() #Bollinger Band Width
#addCCI() #Commodity Channel Index
#addCMO() #Chande Momentum Oscillator
#addDEMA() #Double Exponential Moving Average
#addDPO() #Detrended Price Oscillator
#addEMA() #Exponential Moving Average
#addEnvelope() #Price Envelope
#addEVWMA() #Exponential Volume Weigthed Moving Average
#addExpiry() #Options and Futures Expiration
#addMACD() #Moving Average Convergence Divergence
#addMomentum() #Momentum
#addROC() #Rate of Change
#addSAR() #Parabolic Stop and Reverse
#addSMI() #Stocastic Momentum Index
#addTRIX() #Triple Smoothed Exponential Oscillator
#addVo() #Volume
#addWMA() #Weighted Moving Average
#addWPR() #Williams %R
#addZLEMA() #ZLEMA
#addTA(OpCl(WDI.DE),col='blue', type='h') #add own indicators - here open to close price change

# 4) weitere Datenanalyse
hist(WDI.DE[,4], col="grey", main = "Plot8 - Histogram", xlab="Closing Prices since 2018-09-24") #The histogram of closing price of apple stock with the heading “Apple Close”
chartSeries(OpCl(WDI.DE), name="Plot 9 - % open to close") #percent change open to close
chartSeries(OpOp(WDI.DE), name="Plot 10 - % open to open") #percent change open to open
chartSeries(HiCl(WDI.DE), name="Plot 11 - % high to close") #the percent change from high to close 
#as.numeric(period.max(Cl(WDI.DE),endpoints(WDI.DE,on='weeks'))) #weekly max
#Lag(Cl(WDI.DE),c(1,3,5)) #One, three, and five period lags
#Delt(Op(WDI.DE),Cl(WDI.DE),k=1:3) # Open to close one-day, two-day and three-day lags
returns <- allReturns(WDI.DE) %>% # daily,weekly,monthly,quarterly, and yearly // dailyReturn(), weeklyReturn(), monthlyReturn()
  as.data.frame() %>%
  mutate(Datum = rownames(.)) %>%
  mutate(Datum = as.Date(Datum))
returns %>%
  select(Datum, daily) %>%
  drop_na() %>%
  ggplot(aes(x=Datum, y=daily)) +
  geom_line() +
  theme_minimal() +
  theme(axis.title.x=element_blank(), axis.title.y=element_blank()) +
  labs(
    title = paste("daily returns"),
    subtitle = "der Wirecard Aktie",
    caption = "Plot 12")
returns %>%
  select(Datum, weekly) %>%
  drop_na() %>%
  ggplot(aes(x=Datum, y=weekly)) +
  geom_line() +
  theme_minimal() +
  theme(axis.title.x=element_blank(), axis.title.y=element_blank()) +
  labs(
    title = paste("weekly returns"),
    subtitle = "der Wirecard Aktie",
    caption = "Plot 13")
returns %>%
  select(Datum, monthly) %>%
  drop_na() %>%
  ggplot(aes(x=Datum, y=monthly)) +
  geom_line() +
  theme_minimal() +
  theme(axis.title.x=element_blank(), axis.title.y=element_blank()) +
  labs(
    title = paste("monthly returns"),
    subtitle = "der Wirecard Aktie",
    caption = "Plot 14")



Beliebte Posts aus diesem Blog

Was ist fremd?

brandy74 "Malstunde" Some rights reserved. www.piqs.de Der Begriff Fremdheit wird benutzt zur Charakterisierung einer Beziehung. Immer muss etwas bekannt sein um es auch als fremd zu bezeichnen; andernfalls kann es nicht beschrieben werden. Wissenschaftlich wird die Fremdheit oft auch als die Gleichzeitigkeit von Nähe und Entferntheit, von Verbundenheit und Getrenntheit charakterisiert. Wer demnach etwas als fremd bezeichnet, unterscheidet die Welt an dieser Stelle in ein Innen und ein Außen. Das Fremde sei jenseits einer einer imaginären Grenze. Diese Grenzen können unterschiedlich lokalisiert werden. Bei der kulturellen Fremdheit werden andere kulturelle Verhaltensweisen und Ansichten identifiziert und als fremd bezeichnet. Bei der sozialen Fremdheit ist der Fremde hingegen Teil der eigenen Gesellschaft, der eigenen Gemeinschaft. Durch die Zuschreibung der sozialen Fremdheit wird er aus dem eigenen Bereich, also dem eigenen sozialen Milieu, exkludiert. Drückt sich

Sentiment-Analyse von deutschen Texten in R

Eine Sentiment-Analyse funktioniert im Grunde wiefolgt: die einzelnen Wörter werden eines Textes werden mit bestimmten Bibliotheken abgeglichen und eine Einteilung in "positiv/negativ" oder ein hinterlegter Sentiment-Wert abgegriffen. Die Summe dieser Werte ergibt schließlich den Sentiment-Score des ganzen Texts. Für englische Texte sind in R bereits Bibliotheken hinterlegt (z.B. im Package tidytext ). Für deutsche Texte habe ich auf meiner Recherche die Bibliothek  SentiWS  der Universität Leipzig gefunden. Die rund 16.000 positiven und 18.000 negativen Wörter sind mit einer Wertspanne von -1 zu 1 hinterlegt. Das Problem ist, dass diese in zwei Textdateien kommen, deren Format erst aufbereitet werden muss. So sieht die Bibliothek beim Einlesen aus: Mit folgendem Code habe ich mir die Bibliothek operationalisiert: library(dplyr) # SentiWS - Dateien hier runterladen: https://wortschatz.uni-leipzig.de/en/download # a) negative Wörter # die Textdatei einlesen negat

Migration und Bevölkerungsentwicklung: Solidarität und Selbsthilfe

Aus: Neue Potenziale - zur Lage der Nation in Deutschland , Juni 2014,  Berlin-Institut für Bevölkerung und Entwicklung Vor ein paar Wochen war ich auf einem sehr spannenden Vortrag am ifo-Institut in München von Herrn Dr. Klingholz, Direktor des Berlin Instituts für Bevölkerung und Entwicklung. Der Vortrag widmete sich einerseits der Zusammensetzung und dem Bildungs- wie Integrationsgrad deutscher Migranten und andererseits der zukünftigen Bevölkerungsentwicklung in Teilen der Welt und deren Auswirkungen auf die Migration in Europa, bzw. Deutschland. Polarisierend Unterteilt man die Migranten(1) nach Gruppen hinsichtlich ihrer Herkunftsländer, so zeigt sich oft eine starke Polarisierung des Bildungsgrades. Beispiel Rumänien und Polen. Zwar ist der Anteil der Migranten aus Rumänien und Polen ohne Bildungsabschluss wesentlich höher als der Anteil der Einheimischen. Umgekehrt ist der Anteil an Akademikern bei Migranten aus Rumänien und Polen höher als bei Einheimischen. Auch

die Hot-Dog-Ökonomie

Diego Torres Silvestre " Ice Creams, Hot Dogs & Pretzels" Some rights reserved. www.piqs.de Man stelle sich eine Wirtschaft vor, in der nur zwei Güter hergestellt würden: Würstchen und Brötchen. Konsumenten würden Hotdogs kaufen; also jeweils ein Brötchen mit einer Wurst. Die Fertigung geschieht durch Menschenhand. So fing Paul Krugman 1997 einen Artikel für das Online-Magazine Slate an, in welchem er den Zusammenhang von Technologie, Jobs und Kapitalismus erklären will. Er fährt fort, dass in dieser Wirtschaft 120 Millionen Arbeiter beschäftigt sind, was einer Vollbeschäftigung entspreche. Zur Herstellung einer Wurst oder eines Brötchens benötige es zwei Arbeitstage. Die 60 Millionen Angestellten in der Brötchenproduktion und genauso viele in der Wurstfabrikationen produzieren demnach täglich 30 Millionen Brötchen und Würste. Angenommen es komme eine verbesserte Technologie auf, mit deren Hilfe ein Arbeiter zur Herstellung einer Wurst nur noch einen Tag

die schöne Welt von Red Bull

Till Krech "wroooom" Some rights reserved. www.piqs.de Red Bull – vom Marktführer für Energiegetränke zum kommenden Medienimperium? Das Magazin Fast Company vergab in der Liste „The World´s 50 Most Innovative Companies“ den 29. Platz an Red Bull für genau diese Entwicklung. Gebündelt unter dem Dach der Red Bull Media House GmbH besitzt der Konzern mittlerweile verschiedene Medienbeteiligungen und Neugründungen. Kritiker bezeichnen es als eine gewaltige Marketingmaschine. Rund ein Drittel des Umsatzes wird für die Pflege des Marktauftritts ausgegeben. Eine firmeninterne Nachrichtenagentur sammelt Inhalte zu einen der vielen weltweiten aufsehenerregenden Red-Bull-Ereignisse, um sie externen Medien gebündelt und aufbereitet zur Verfügung zu stellen. Über eigene Medien werden die Konsumenten sogar direkt erreicht. Das 2007 gegründete Hochglanzmagazin "Red Bulletin" hat bereits eine Auflage von 5 Millionen Heften erreicht und wird mehrspraching in zwö

Verspargelung der Landschaft

FZ 18: "Mount Idarkopf" www.piqs.de Some Rights reserved. Vielleicht ist es, weil ich erst 22 Jahre alt bin. Vielleicht weil es bei meiner Heimatstadt schon seit mehr als zehn Jahren ein Windrad gibt. Aber das Argument einer Verspargelung der Landschaft durch Windräder zählt für mich nicht. Ich komme aus Baden-Württemberg. Insofern verfolgt mich das Argument der Verspargelung der Landschaft durch den ehemaligen baden-württembergischen Ministerpräsidenten Erwin Teufel fast genauso lange wie das Windrad vor meiner Haustür. Das Argument wird immer wieder von jenen hervorgebracht, welche gegen die Aufstellung von Windrädern sind. Die einen fürchten um die Landschaft, andere finden sie einfach nicht schön und noch andere bringen es nur als Vorwand. Besonders die Nähe zur Atomwirtschaft fällt einem bei der hießigen CDU auf. In Baden-Württemberg ist der Fall bei den Windrädern vielleicht ein bisschen spezieller. Wenn man hier die Windenergie effizient nutzen will, so