CORE – Da­­ten­vi­su­a­li­si­e­rung mit Plot­ly und Dash

CORE – Correlating Equity
A Stable Core is importatnt, not only for your Body.

Weitere Projektinfos

Viel Spaß mit dem Video 🍿

Dieses Projekt ist entstanden in Zusammenarbeit mit:

Erarbeitet im Rahmen der Vorlesung “Data Visualization”, während meines Studiums in AI/ML an der Hochschule Luzern

Unser Tool soll eine Hilfestellung für zukünftige Investitionen sein, indem es den Gewinn und die Korrelation zwischen verschiedenen Assets grafisch darstellt. 

Ein konkreter Anwendungsfall wäre folgender:  

Einem Hedge Fond ist es nicht nur wichtig gute Gewinne zu machen. Im besten Fall möchte man auch eine möglichst kontinuierliche Wertsteigerung, ohne grosse Drawdowns erzielen.  Dies kann erreicht werden, indem man sich für sein Portfolio Assets aussucht, die untereinander eine starke negative Korrelation aufweisen. Einfach gesagt: Wenn eines nach oben geht, dann geht das andere nach unten. Da man in beide investiert ist, resultiert daraus eine kontinuierlichere Bilanz (Blau). 

+ = 

Daten

Für unsere Daten brauchen wir zwei Datasets aus mit Aktien des S&P500. Das eine beinhaltet die Preisdaten aller Aktien über eine Zeitspanne, das andere haben wir genutzt, um Zusatzinformationen zum Aktientitel zu erhalten, beispielsweise den ausgeschriebenen Firmennamen und den Sektor in welchem die Firma tätig ist. 

Datenaufbereitung

Die zugrunde liegenden Preisdaten sehen folgendermassen aus. Zu jedem Datum gibt es für jede Aktie die Preise im OHLC (Open, High, Low, Close, Volume) Format. Dabei ist der Name der Aktie auch nur ein Spaltenwert. Dies war für unsere Anwendung nicht optimal. 

Diese Daten wurden mit Pandas herumjongliert, damit wir die Preise in folgendem Format erhielten: 

Eine Tabelle mit demselben Format wurde für die täglichen Handelsvolumen erstellt. Damit diese Datenmanipulation nicht jedes Mal gemacht werden muss, wurden diese Tabellen abgespeichert sodass damit weitergearbeitet werden kann. 

Umsetzung

Am Anfang der Implementation haben wir uns darauf festgelegt, die Datenverarbeitung in einem eigenen Modul, nebst der Darstellung und der App selber zu machen. So entstand eine organische Aufteilung der Zuständigkeitsbereiche. Reto befasste sich mit dem GUI während Tim sich um die benötigten Funktionen im Backend kümmerte.  

Zuerst fokussierten wir uns auf die Hauptgrafik. Einen Scatterplot aller Aktien mit ROI Wert auf der Y- und der Korrelation zur ausgewählten Aktie auf der X-Achse. Dies war für uns das Proof of Concept. Als diese Grafik funktionierte, waren wir motiviert weitere Funktionalitäten einzubauen. Diese kamen in der folgenden Reihenfolge: 

  1. Zeitspannen Selektor: Erlaubt die Auswahl eine Zeitspanne, in welcher die Aktien verglichen werden. 
  1. Hover Infos: Mithilfe eines zweiten Datensatzes kann zu jeder Aktie zusätzliche Infos, beispielsweise der Industriesektor angezeigt werden. Weiter erlaubt uns diese Info auch die Punkte auf dem Graph zu filtern. 
  1. Korrelations Filter: Über einen Slider kann die gewünschte Korrelation gefiltert werden. 
  1. Zusätzliche Charts: Beim hovern über eine Aktie wird der Preisverlauf von dieser und der ausgewählten Aktie in einem separaten Chart angezeigt. In einer weiteren Graphik wird das durchschnittliche Handelsvolumen angezeigt. 
  1. Art der Korrelation: Der User kann festlegen, mithilfe welches Korrelation Typus er die Punkte auf dem Scatterplot darstellen möchte. 

Darstellung  

Scatterplot 

Als Hauptgrafik wurde ein Scatterplot gewählt, da wir diverse Datenpunkte haben und zwei eindeutige Werte, welche diesen Punkten zugewiesen werden. So wird auf der x-Achse die Korrelation und auf der y-Achse der Return on Invest dargestellt, die Punkte sind entsprechend diesen beiden Werten im Graphen verteilt.  Die Sektoren wurden eingefärbt, sodass ein Investor die Übersicht besser behalten kann. Weiter kann durch die daraus resultierende Legende nach Sektoren gefiltert werden. 

Line Chart

Um detailliertere Informationen zu der gewählten Aktie und einer weiteren zu erhalten, wurden Grafiken eingebaut, welche on hover aktualisiert werden. Da wir einen Verlauf darstellen und vergleichbar machen wollten, haben wir den Line Chart gewählt. Weiter kann man durch die klare Verbindung der Linien die kleinsten Veränderungen des Preises sehen und einen längerfristigen Trend ausmachen. Zur besseren Unterscheidung der beiden Linien und entsprechend der Aktien wurden zwei verschiedene Farben eingesetzt. 

Bar Chart

Als weitere hover Grafik, hat sich ein Bar Chart angeboten, welcher den Median des täglichen Handelsvolumens zweier Aktien darstellt. Da auch hier wieder ein Vergleich stattfindet, wurden die beiden Werte in denselben Farben eingefärbt wie beim Line Chart. 

Schwierigkeiten

Zu Beginn war es schwierig, eine Darstellung zu finden, welche nicht zu “langweilig” auf den User wirkt. Weiter hatten wir Mühe eine Data Mining Technik zu finden, die man gleichzeitig visualisieren und den Use Case der Visualisierung einfach erklären kann.  

Auch die Geschwindigkeit bei gewissen Filtern war problematisch, da das Dataframe angepasst und gegebenenfalls überschrieben werden muss. Sofern über das komplette Dataframe Anpassungen gemacht werden müssen oder gefiltert werden muss, so geschieht das 500 mal, gerade beim Filter der Art der Korrelation, wurde uns dies zum Verhängnis. Dies haben wir gelöst indem wir eine effizientere Methode für die Berechnung der Korrelationen implementierten. 

Endprodukt

Das Endprodukt ist eine Dash Applikation, darin sind mehrere Grafiken, Filter und Callbacks definiert. Der Grossteil der Funktionen wurden in einem separaten File festgelegt, das Styling der Komponenten ebenfalls. Weiter wurde Bootstrap importiert, sodass wir das eigene Stylesheet so kurz als möglich halten und trotzdem eine ansprechende Applikation gestalten konnten. 

Vision

Wenn wir an diesem Projekt weiterarbeiten würden, kämen als nächstes die folgenden Features hinzu. 

Verschiedene Assets

Aktuell verwenden wir nur Daten von Aktien des S&P500. hauptsächlich aus dem Grund, dass bei diesem Projekt nicht die Datenbeschaffung, sondern die Visualisierung im Vordergrund stand. Das Problem dabei ist jedoch, dass viele Aktien dieses Index bereits eine hohe Korrelation untereinander aufweisen. Deshalb wäre es interessant weitere Assets wie Edelmetalle, Kryptowährungen, Obligationen, usw. in den Datensatz aufzunehmen. 

Korrelation zu ganzem Portfolio

In der Praxis ist man nicht nur in eine Aktie investiert, sondern hat schon ein Portfolio aus unterschiedlichen Assets. Deshalb wäre es gut, wenn man in unserem Tool bei der Auswahl des Assets nicht nur eines, sondern mehrere angeben könnte. So könnte die Korrelation der einzelnen Assets zu einem Ganzen Portfolio und nicht nur zu einem einzelnen Wert berechnet werden. 

Reti, who the f*ck is Reti?

Reti - The man himself
Als Webentwickler und begeisterter AI-Student bin ich immer auf der Suche nach neuen Projekten. Ob Websites gestalten, Apps entwickeln oder Algorithmen optimieren, ich bin stets bereit, mich neuen Herausforderungen zu stellen.