Wie oft ich schon die Macht der Statistik für meinen privaten Aktienhandel nutzen wollte…  doch es fehlten einfach die Daten hinsichtlich historischer Kurse. Es ist zwar problemlos möglich den Kursverlauf der letzten Jahre manuell über entsprechende Websites herunterzuladen, aber den Download für 300 Aktien auf einen Schlag? Fehlanzeige! Wie kommt man also ans Ziel?

Die Idee: Historische Kursdaten in großen Mengen herunterladen und auswerten

Die Idee: Historische Kursdaten in großen Mengen herunterladen und auswerten

Ich habe mir auf Basis der Google Finance API ein eigenes kleines Tool geschrieben (ihr könnt es hier herunterladen), welches den Download großer Mengen an Kursdaten verschiedener Handelsplätze erlaubt. Hinweis: Ihr verstoßt mit der Nutzung möglicherweise gegen die Bedingungen von Google, wie sie im Disclaimer geschildert werden!

Update: Die Google Finance API wurde 2017 abgestellt. Die hier vorgestellte Software verwendet jetzt Alpha Vantage.

Basics: Input und Output

Der „Stock Data Downloader“ ist relativ simpel gestrickt. Man stecke ein CSV hinein, welches folgende Spalten in dieser Reihenfolge enthält: „Exchange“ mit dem Kürzel für den Handelsplatz (wie von Google Finance angegeben), „Symbol“ mit dem Kürzel für den entsprechenden Titel (wie vom Handelsplatz angegeben) und der Titel-„Name“. Es können auch weitere Spalten hinzugefügt werden. Die so ergänzten Informationen findet ihr im Output-File an jeder Zeile, wodurch sich die ein oder andere Analyse vielleicht etwas leichter gestaltet. Die Input- und Output-Files können in der Konfiguration „StockDataDownloader.exe.config“ geändert werden (siehe dazu auch den nächsten Abschnitt). Natürlich habe ich schonmal ein entsprechendes File für die Deutsche Börse New York Stock Exchange vorbereitet. Nach Download , Konfiguration des API Keys und Start der StockDataDownloader.exe sollte sich euch in etwa folgendes Bild eröffnen.

Screenshot des Stock Data Downloader beim Herunterladen historischer Kursdaten

Screenshot des Stock Data Downloader beim Herunterladen historischer Kursdaten

Wenn ihr (abgesehen vom API Key) an der Konfiguration nichts geändert habt, dann findet ihr nun eine neue CSV-Datei im Ordner „Output“. In dieser Datei sind pro Titel die tagesfeinen Eröffnungs- und Schlusskurse sowie höchster und niedrigster Stand gelistet. Um den Vorgang zu unterbrechen, könnt ihr einfach eine beliebige Taste drücken. Bei erneutem Start wird das Tool einfach mit den Titeln weitermachen, die noch nicht heruntergeladen wurden. Besonders nützlich ist dieses Verhalten, wenn Google euch als Bots erkennt. Es treten dann plötzlich Fehler am laufenden Band auf.

Wenn Google einen beim herunterladen historischer Kursdaten als Bot erkennt, dann hilft nur noch Warten

Wenn Google einen beim herunterladen historischer Kursdaten als Bot erkennt, dann hilft nur noch Warten

Es hilft dann, den Download abzubrechen und später (nach etwa 1min) nochmal zu starten. Dieses Prinzip ist nicht etwas zu verwechseln mit einem automatischen Update der Daten. Wer ein paar Tage später die bestehende Datei um neue Kursdaten der verstrichenen Tage ergänzen möchte, der muss ein neues Output-File erzeugen (das alte also beispielsweise löschen).

Konfiguration

Es bestehen folgende Möglichkeiten der Konfiguration in der Datei StockDataDownloader.exe.config

  • StockNames erlaubt das Setzen der Input-Datei im Format [path]\[filename]
  • ParallelConnections gestattet die parallele Bearbeitung der Abfragen. Die Nutzung wird jedoch nicht empfohlen, da Google euch dadurch schneller als Bots erkennt.
  • Delay definiert die Verzögerung (in Millisekunden) bevor eine weitere Abfrage durchgeführt wird. So lässt sich menschliches Verhalten simulieren. Der Standard ist 5000.
  • OutputDir enthält das Verzeichnis, in dem die Output-Daten geschrieben werden.
  • OutputFile enthält den Namen der Output-Datei.
  • IncludeLatestData lässt sich auf „false“ setzen, wenn man auf den letzten Datensatz verzichten möchte. Das ist beispielsweise dann sinnvoll, wenn der Handel am laufenden Tag noch nicht beendet wurde und entsprechend keine sinnvollen High/Low/Close-Werte von Google Finance geliefert werden können.
  • DayLimitToIgnore ist sehr hilfreich, wenn man bereits bei der Datenabfrage Titel, deren letzter Datensatz vor der definierten Anzahl an Tagen angefallen ist, ausschließen möchte.
  • LocalizeDecimalSeparator erlaubt die Anpassung des Dezimaltrenners (z. B. von Punkt auf Komma). Wer R zur Analyse verwendet, sollte hier „false“ stehen haben.
  • Function definiert die Art Daten des Downloads. Der Standard ist TIME_SERIES_DAILY.
  • ApiKey sollte deinen API Key enthalten. Dieser kann kostefrei hier heruntergeladen werden.

Ein Wort zur Datenqualität

Sicher hat man bei Google einen Grund gehabt, diverse Unzulänglichkeiten hinsichtlich der bereitgestellten Kursdaten in den Disclaimer aufzunehmen. Und tatsächlich fehlen zu einzelnen Titeln zwischendurch Tage, Monate oder Jahre. Die Korrektheit der Daten kann ich weder bestätigen noch anzweifeln. Daher müsst ihr die heruntergeladenen Kurse akribisch prüfen und bereinigen. Sonst lauft ihr Gefahr, unzulässige Analysen durchzuführen!