10 hilfreiche R-Pakete für Börsendaten


blog photo
Veröffentlicht von Joanne Snel am 4. November 2021
Insights


Die Programmiersprache R wird häufig für statistische Berechnungen verwendet und ist somit perfekt für Finanzanalysen gemacht. Bei lemon.markets sind wir ein großer Fan von R, da es uns (und, wichtiger noch, unseren Nutzer:innen 🍋) erlaubt, die notwendige Datenexploration und -analyse durchzuführen, um (automatisierte) Trading Entscheidungen zu treffen. lemon.markets ist eine in Berlin ansässige 🇩🇪 Brokerage-API von Entwickler:innen für Entwickler:innen, damit sie ihre eigene Brokerage-Experience an der Börse bauen können. In diesem Artikel stellen wir Euch 10 hilfreiche R-Pakete vor, die für die Arbeit mit Börsendaten verwendet werden können. Damit wirst Du in der Lage sein, Deine Daten zu manipulieren und technische Analysen damit durchzuführen.

Der Schwerpunkt dieses Artikels liegt auf Börsendaten - das bedeutet, dass wir uns in erster Linie mit dem Importieren, Manipulieren, Visualisieren und Berichten von Daten beschäftigen. Und hier ist R Shiny-s 😉 aufgrund seines Statistik-Fokus am besten geeignet! Wir wollen Dich hier auch nicht mit der großen Anzahl an verfügbaren R-Paketen überwältigen, denn wir sind sicher, dass dieser Artikel einen zweiten (und dritten, und vierten, und...) Teil haben kann.

lemon.markets bietet zwei APIs an: die Trading-API und die Marktdaten-API, daher werden wir uns in diesem Artikel nur auf letztere konzentrieren. Nachdem Du beispielsweise OHLC-Daten zu einigen Finanzinstrumenten von unserer API abgerufen hast, gibt es mehrere Möglichkeiten, sie zu verwerten. Vielleicht möchtest Du mit diesen Preisen zukünftige Kursbewegungen vorhersagen, oder Du möchtest mit ihnen technische Indikatoren (in Echtzeit) erstellen. Unabhängig davon, für welchen Weg Du Dich entscheidest, musst Du Deine Börsendaten sammeln, (vor-)verarbeiten und eventuell visualisieren. Wir haben Pakete zusammengestellt, die diese drei notwendigen Schritte abdecken.

Sollte ich R nutzen? 🏴‍☠️

R ist eine der am weitesten verbreiteten Sprachen in der Datenanalyse. Es wird vor allem im akademischen Bereich verwendet, aber auch große Unternehmen wie Uber, Facebook und Airbnb nutzen R für die Visualisierung von Daten und statistische Schlussfolgerungen. Eine der stärksten Eigenschaften von R ist, dass es open-source ist und jeder seine eigenen R-Pakete beisteuern kann, was bedeutet, dass es fast unendlich viele Optionen zur Auswahl gibt. Wir mussten die Liste der Pakete, die wir heute mit Euch teilen wollen, tatsächlich eingrenzen.

Wenn Du R für das Finanzwesen verwendest, wirst Du wahrscheinlich einige allgemeinere Pakete (die sich mit der Datenverwaltung befassen) und ein paar finanzspezifische Pakete nutzen. Tatsächlich bauen viele Pakete aufeinander auf - Du wirst merken, dass das R-Ökosystem stark miteinander verbunden ist. ♻️

Eine kurze Anmerkung zum tidyverse 🧼

Wir können keinen Artikel über Datenmanipulation schreiben, ohne tidyverse zu erwähnen. tidyverse ist eine Sammlung von R-Paketen, die speziell für Data Science entwickelt wurden. Es ist so etwas wie der SciPy-Stack für Python. Mit tidyverse kannst Du, wie der Name schon sagt, Deine Daten aufräumen. Es beinhaltet aber auch zusätzliche Funktionen wie Datenvisualisierung und -manipulation. Darauf gehen wir später ein, aber falls der Name auftaucht, weißt Du, wovon wir sprechen.

Marktdaten sammeln

Der erste Schritt, bevor wir mit unseren Marktdaten arbeiten können, besteht darin, sicherzustellen, dass wir überhaupt welche haben. Das bedeutet, dass wir sie sammeln müssen. Mit der lemon.markets Marktdaten-API kannst Du historische Marktdaten im M1/D1/H1-Format, die letzten Quotes und die letzten Trades für bestimmte Wertpapiere abrufen. Wenn Du zum Beispiel stündliche OHLC-Daten für Apple abrufen möchtest, könnte eine Anfrage an unsere API wie folgt aussehen:

1install.packages("httr")
2library(httr)
3
4market_url <- "https://data.lemon.markets/v1/ohlc/h1?isin=US0378331005"
5res2 <- httr::GET(url = market_url,
6                  add_headers(
7                    Authorization = paste("Bearer", YOUR-API-KEY)
8                  )
9)

Eine einfache R-Implementierung für den Zugriff auf die lemon.markets API - beachte die Verwendung der des httr Pakets. Beachte, dass Du Deinen eigenen API Key eingeben musst, damit das Code Snippet ausgeführt werden kann. 🙂

Der Einfachheit halber kannst Du auch das R-Paket von Mario von Quantargo verwenden, das Du hier finden kannst! Er ist eines unserer geschätzten Community-Mitglieder, die Dinge mit und für die lemon.markets API bauen, um sie für alle Arten von Entwickler:innen zugänglich zu machen #opensource. Quantargo ist eine Plattform, die Dir helfen kann, Data Science Skills aufzubauen, und zwar durch Kurse, Workshops (auch für Unternehmen) und einen browserbasierten Arbeitsbereich, in dem Du Deine Projekte sofort einsetzen kannst. Es gibt auch einen hilfreichen Einführungskurs in R, den Du Dir anschauen kannst.

📚Readr

Wenn Du mit großen Datensätzen arbeitest, die Du strukturieren musst, ist readr die richtige Wahl für Dich. R verfügt über integrierte Befehle zum Einlesen von rechteckigen Daten, egal ob es sich um eine .csv-, .tsv- oder .fwf-Datei handelt. Beim Analysieren einer Datei mit readr kannst Du den Datentyp für jede Spalte angeben (oder er wird Dir vorgeschlagen). Außerdem gibt readr ein tibble aus, das Herzstück von tidyverse. Tibble ist ein data.frame Typ, der eine höhere Komplexität Deiner Daten erlaubt (im Vergleich zum ursprünglichen Format in R). Eine einfache Implementierung sieht folgendermaßen aus:

1install.packages("readr")
2library(readr)
3data <- read_csv("filename.csv", col_types = list(
4    var1 = col_double(),
5    var2 = col_integer(),
6    var3 = col_datetime()))

Mit diesem Paket kannst Du auch direkt aus einer Excel-Tabelle oder aus Google-Sheets lesen. In diesem Spickzettel erfährst Du mehr.

🧮 Quantmod

Das quantmod-Paket kann Daten laden, Daten in Charts darstellen und relevante technische Signale erhalten. Dieses Paket arbeitet mit verschiedenen Quellen, einschließlich (aber nicht beschränkt auf) Yahoo Finance und FRED. Es kann aber auch Daten aus einer MySQL-Datenbank abrufen. Im folgenden Code Snippet zeigen wir Dir, wie Du historische Kursdaten für AAPL von YahooFinance laden kannst (beachte, dass diese Preise in USD angegeben sind):

1install.packages("quantmod")
2library(quantmod)
3getSymbols("AAPL", src="yahoo")
4chartSeries(AAPL, subset="last 6 months", theme=chartTheme("white"))
5addMACD()

Wir haben uns für ein Diagramm der letzten 6 Monate der OHLCV-Daten (Open High Low Close Volume) entschieden, deren Format man bequem über die URL Endung spezifizieren kann (andere Formate findest Du in der Dokumentation). Außerdem haben wir den Indikator Moving Average Convergence Divergence (MACD) hinzugefügt, der die Beziehung zwischen zwei gleitenden Durchschnitten des AAPL-Kurses anzeigt. Daraus ergibt sich das unten stehende Diagramm:

OHLCV-Daten für die letzten 6 Monate für AAPL

Wie Du siehst, kann quantmod auch für die (Vor-)Verarbeitung Deiner Daten verwendet werden. Und es gibt noch viel mehr, was Du damit machen kannst: Dies ist nur ein Vorgeschmack. Probiere es selbst aus!

(Vor-)Verarbeitung Deiner Marktdaten

Die Beschaffung von Rohdaten bedeutet oft, dass Du eine oder mehrere Änderungen an den Daten vornehmen musst - vielleicht hast Du irrelevante Daten, fehlende Werte, Daten im falschen Format oder Du möchtest aus diesen Daten bestimmte Metriken erhalten. Willkommen in der (Vor-)Verarbeitungsphase, in der es mehr als genug R-Pakete gibt, die Dir dabei helfen, die oben genannten Probleme zu lösen.

⏰ Xts

1install.packages("xts")
2library(xts)

Das xts-Paket ist das Paket für den Umgang mit Zeitreihendaten (und es erweitert das beliebte zoo-Paket, was bedeutet, dass Dir noch mehr Methoden zur Verfügung stehen). Da Finanzdaten häufig in Form von Zeitreihen vorliegen, erwarten wir, dass xts-Objekte sehr nützlich sind: Stell Dir diese als zeitindizierte Matrizen vor. Du kannst viele verschiedene Operationen mit diesen Matrizen durchführen, wie z. B. das Extrahieren von zeitspezifischen Datensegmenten. Wenn Du beispielsweise Kurse prognostizieren möchten, aber die volatilen Öffnungs- und Schlusszeiten des Marktes nicht berücksichtigen willst, kannst Du diese beiden Zeitintervalle aus Deinem Modell ausschließen. Dieser Leitfaden gibt einen guten Überblick darüber, was mit den beiden Paketen alles möglich ist.

🌪️ Dplyr

1install.packages("dplyr")
2library(dplyr)

Das Paket dplyr kann zur Datenmanipulation verwendet werden. Es kann Deine Daten filtern, sortieren, zusammenfassen, auswählen und verändern. In der Finanzanalyse kann dies nützlich sein, um:

  • Finanzinstrumente zu finden, die miteinander in Beziehung stehen,
  • Bestimmte Metriken zu erhalten, z. B. Standardabweichung, Mittelwert, Spanne, usw.
  • Aggregation von Kursinformationen von verschiedenen Börsen zu erstellen.

In diesem Spickzettel findest Du alles, was Du über die Verwendung von dplyr wissen musst.

📅 Lubridate

Lubridate ist eine weitere Komponente des tidyverse. Wofür dieses Paket gut ist? Es stellt sicher, dass Deine Datum-Uhrzeit Objekte korrekt formatiert und/oder kombiniert werden. Zum Beispiel das folgende Code Snippet,

1install.packages("lubridate")
2library(lubridate)
3date <- as_datetime(1635592026)

wird 2021-10-30 11:07:06 UTC zurückgegeben. Es ist robust gegenüber Zeitzonen, Schaltjahren und allen anderen Zeitanomalien. Dies kann nützlich sein, wenn Du mit mehr als einer Datenquelle (mit unterschiedlichen Formaten) arbeitest oder wenn Deine Trading Plattform nur bestimmte Formate akzeptiert.

🚦TTR

1install.packages("ttr")
2library(ttr)

Technical Trading Rule (TTR) ist eine beliebte Wahl, wenn es um technische Trading Signale geht. Sie umfasst mehr als 50 technische Indikatoren wie den eher unbekannten Chande Momentum Oscillator (CMO) oder den bekannten Relative Strength Index (RSI). Wenn Du mehr darüber erfahren möchtest, wie Du Trading Signale als Motivation für Deine Strategien nutzen kannst, lies unseren Artikel über einsteigerfreundliche Trading Strategien.

TTR kann auch verwendet werden, um verschiedene Volatilitätsmaße wie die True Range (TR) oder die Chaikin Volatilität (VT) zu erhalten. Damit kannst Du feststellen, wie viel Risiko Du eingehst und ob dies mit Deiner Trading Philosophie übereinstimmt.

🧹 Tidyquant

Tidyquant ist die Brücke zwischen tidyverse und zoo, xts, quantmod & TTR. Es erleichtert die Arbeit mit den oben genannten Paketen, indem es die Daten in einem tibble formatiert. Zum Beispiel kann das Data Loading, das wir im Abschnitt "quantmod" durchgeführt haben, wie folgt umformuliert werden:

1install.packages("tidyquant")
2library(tidyquant)
3google <- tq_get(x = "GOOG")

Dies garantiert ein tibble als Output, was bedeutet, dass wir viele der vorgestellten Datenmanipulationswerkzeuge auf die OHLCV-Daten anwenden können, ohne Formatierungsprobleme zu haben! Auf dieser Seite findest Du die wichtigsten Funktionen des Pakets.

Visualisierung von Marktdaten

Die Visualisierung Deiner Daten kann ebenfalls eine wichtige Komponente beim Festlegen von Trading Entscheidungen sein. Möglicherweise kannst Du Muster und Anomalien erkennen, die bei der Betrachtung der rohen Kursdaten nicht sofort ersichtlich sind. Lies diesen Artikel, um eine Idee zu bekommen.

📈 Ggplot2

Ggplot2 ist ein weiterer Teil des tidyverse und kann verwendet werden, um Diagramme aus Deinen Daten zu erstellen und einen Einblick in Deinen Datensatz zu erhalten. Zum Beispiel können wir die Aktienkurse zweier Wertpapiere in einem Diagramm darstellen, um (visuell) festzustellen, ob es eine gemeinsame Bewegung gibt (beachte, dass dies mit einem statistischen Test, z. B. dem Engle-Granger-Test, bestätigt werden sollte):

1install.packages(c("tidyquant", "ggplot2", "dplyr"))
2library(tidyquant)
3library(ggplot2)
4library(dplyr)
5multiple_stocks <- tq_get(c("GOOG", "AMZN"),
6                          get = "stock.prices",
7                          from = "2021-01-01",
8                          to = "2021-10-31")
9ggplot(data = filter(multiple_stocks, symbol == "GOOG" || symbol == "AMZN"),
10       aes(x=date, color=symbol)) + geom_line(aes(x=date, y=open, color=symbol))

Wir verwenden tidyquant, um Aktienkursdaten (aus quantmod) in einem tibble zu erhalten, dplyr, um das tibble zu filtern und ggplot, um die Daten grafisch darzustellen.

Dieses Code Snippet wird ein Diagramm ausgeben, das wie folgt aussieht:

Bei rein visueller Betrachtung scheint die Google-Zeitreihe einen Drift (Zeittrend) zu enthalten, während Amazon eher um einen Mittelwert zu schwanken scheint. Diese Erkenntnisse könnten uns darauf hinweisen, dass diese beiden Aktien für eine Pairs-Trading-Strategie wahrscheinlich nicht sehr geeignet sind.

In diesem Tutorial findest Du weitere Anregungen, wie ggplot2 für Finanzdaten verwendet werden kann.

Python & R

Im Bereich der Data Science wirst Du nie nur mit einer Programmiersprache und/oder Plattform in Berührung kommen. Wenn Du zum Beispiel mit einem multidisziplinären Team zusammenarbeitest, musst Du vielleicht von einer Sprache zur anderen wechseln oder einen Weg finden, sie in ein einziges Skript zu integrieren. Bei lemon.markets verwenden wir sowohl Python als auch R, um unsere Trading Strategien zu entwerfen. Daher könnte es ja nützlich sein, eine Möglichkeit zu finden, beide Sprachen zu kombinieren.

➡️ Reticulate

Mit dem Paket reticulate kannst Du eine Python Session in ein R-Skript einbetten, was den Übergang zwischen den beiden unkompliziert macht. Dies kann nützlich sein, wenn Du zum Beispiel R für die Datenexploration und Python für die Automatisierung Deiner Trading Strategie verwendest.

Alles in allem gibt es eine Vielzahl von R-Paketen, die im Finanzkontext nützlich sein können. Wir haben die Vorteile der Verwendung von tidyverse (tibbles!) besprochen, wie bestimmte Finanzpakete in Verbindung mit tidyverse verwendet werden können und wie man technische Signale erhält. Aber wir haben nur an der Oberfläche gekratzt!

Gibt es noch andere R-Pakete, die Du für unverzichtbar hältst, wenn es um Finanzen und automatisiertes Trading geht? Teile sie gerne mit uns! Und wenn Du noch nicht Teil von lemon.markets bist, trage Dich in unsere Warteliste ein - wir würden uns freuen, Deine R-Projekte zu sehen.

Joanne von lemon.markets 🍋

Das könnte Dich auch interessieren

Die lemon.markets Trading API verstehen

blog photo

lemon.markets wurde aus dem Mangel an europäischen Brokern mit einer stabilen, zuverlässigen API geboren. Wir haben unsere Trading API für Entwickler:innen gebaut, sodass Du fast jedes erdenkliche Brokerage-Produkt damit bauen kannst. Lies weiter, um mehr über die verschiedenen Endpunkte zu erfahren.

Trading Terminologie, die Du als Anfänger:in kennen solltest

blog photo

Das Trading-Universum ist bekannt für seine ganz eigene Sprache - was ist überhaupt der Unterschied zwischen einem "Bärenmarkt" und einem "Bullenmarkt"? Und warum werden Finanzinstrumente immer mit zwei Preisen aufgeführt? Wenn Du gerade erst mit dem Trading anfängst oder eine kurze Zusammenfassung benötigst, lies weiter, um die Fachbegriffe für Anfänger:innen aufzufrischen. Du wirst im Handumdrehen ein Expert:in sein!

Trading basierend auf Nachrichten: Eine Sentiment Strategie mit der lemon.markets API

blog photo

Wenn Du jemals darüber nachgedacht hast Deine Trading Entscheidungen basierend auf den Nachrichten zu treffen, dann weißt Du wahrscheinlich auch welcher Zeitaufwand mit dieser Strategie verbunden ist. Was wäre also, wenn Du den Prozess automatisieren könntest? Lies weiter, um zu erfahren wie Du einen Sentiment-Analyse Bot einrichtest, der für Dich basierend auf Nachrichtenmeldungen handelt.

Tiefer eintauchen

Finde weitere Ressourcen für einen einfachen Einstieg

In unserer Dokumentation erfahrt Ihr mehr über unsere API-Struktur, die verschiedenen Endpunkte und spezifische Anwendungsfälle.

Austauschen

Tritt der lemon.markets Community bei

Tritt unserem Slack-Channel bei, um Dich aktiv an unserer Community zu beteiligen, Fragen an andere Nutzer:innen zu stellen und immer auf dem Laufenden zu bleiben.

Team unterstützen

Lust lemon.markets mit uns zu bauen?

Wir sind immer auf der Suche nach großartigen Ergänzungen für unser Team, die uns beim Aufbau einer Brokerage Infrastruktur für das 21. Jahrhundert helfen.

Products
Pricing
For Developers
SlackGithubBlog
© lemon.markets 2021Privacy PolicyImprint
All systems normal