In der Vergangenheit war die Yahoo Finance API eine der besten und einfachsten Möglichkeiten, um ein paar Finanzdaten per VBA Makro direkt nach Excel zu importieren. Es gab eine API für historische Aktienkurse und eine für Echtzeitdaten wie EPS, Dividende je Aktie, KBV, KGV, etc. Beide APIs wurden allerdings nach einer Generalüberholung der Yahoo Finance Webseite in 2018 abgeschaltet, woraufhin sich viele Privatinvestoren auf die Suche nach alternativen Lösungen machten. Leider sind diese meist entweder nicht dauerhaft kostenlos oder aber in ihrer Nutzung begrenzt wie z.B. Alpha Vantage.
Update 2020: Download historischer Kursdaten von Yahoo Finance
Wie ich nun von einem DIY Investor Leser gelernt habe, stellt Yahoo Finance seit kurzem wieder eine Möglichkeit zur Verfügung, die historischen Aktienkurse einzelner Unternehmen direkt nach Excel zu importieren.
Der Download von Echtzeitdaten, Ratios etc. – und damit auch der (rechtmäßige) Import nach Excel – erfordert inzwischen eine Premium-Mitgliedschaft… zugegebenermaßen hatte ich mich schon oft gewundert, warum Yahoo seine Daten nicht besser monetarisiert (was ja in der Vergangenheit einige Startups auf der Basis der kostenlosen Yahoo Daten übernommen hatten).
Wie dem auch sei… in diesem Artikel möchte ich euch i.W. ein Update meines Artikels zum Download historischer Aktienkurse per VBA Makro via Yahoo Finance geben.
Yahoo Finance API: Neue URL für historische Aktienkurse
Die gute Nachricht zuerst. Der in meinem Artikel zum Download historischer Kursdaten mit der Yahoo Finance API beschriebene Ansatz funktioniert nach wie vor genauso wie beschrieben.
Einzig die URL, die zugehörigen Variablen sowie der Aufbau der Tabelle haben sich leicht verändert:
wobei
- Ticker (AAPL): Das Tickersymbol des Unternehmens, in diesem Fall Apple
- Startdatum (period1): Startdatum, angegeben in Sekunden seit dem 01.01.1970
- Enddatum (period2): Enddatum, angegeben in Sekunden seit dem 01.01.1970
- Intervall (interval): Zeitintervalle zwischen einer Minute und drei Monaten (1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo)
- Datentyp (events): Aktienkurse (history) oder Dividenden (div)
Wie ihr sehen könnt, gibt es nach wie vor den Ticker “AAPL” sowie ein Start- und ein Enddatum für die Zeitreihe. Darüber hinaus könnt ihr die Kurse in ganz unterschiedliche Zeitintervallen herunterladen oder auch auch nur die historischen Dividenden ausgeben lassen.
Wir müssen das ursprünglich in 2017 erstellte Excel File bzw. das dahinterliegende VBA Makro wie gesagt nur leicht anpassen, damit es mit der neuen API arbeiten kann. Im Folgenden möchte ich euch zeigen wie.
Änderungen am Excel Dashboard: Start- und Enddatum
Im Gegensatz zur damaligen URL brauchen wir Tag, Monat und Jahr nun nicht mehr separat als Variablen zu definieren.
Stattdessen werden die Perioden jeweils als Anzahl Sekunden seit dem 1.1.1970 angegeben. Dies können wir in unserem ursprünglichen kleinen Dashboard ganz einfach ergänzen, indem wir den 1.1.1970 als Referenz hinzufügen und die Differenz zu Start- und Enddatum in Sekunden ermitteln:
Nehmen wir mal das gewählte Enddatum – den 7. Mai 2020 – als Beispiel:
Berechnen wir einfach die Differenz aus B5 und B8, erhalten wir 18.389 Tage. Diesen Wert müssen wir nur noch mit 86.400 Sekunden pro Tag multiplizieren und schon erhalten wir den gesuchten Wert, den wir direkt in unser Makro einlesen können… in diesem Fall nämlich 1588809600.
Erforderliche Änderungen am VBA Makro
Im nächsten Schritt müssen wir dafür sorgen, dass die angepasste URL in unser Makro übernommen wird. Wir müssen außerdem die neuen Variablem in unserem Excel mit der URL im Makro verknüpfen und auch die herunterzuladenden Spalten anpassen (die Abfolge in der originalen .csv Datei hat sich leicht verändert).
Aber eins nach dem anderen.
URL aktualisieren
Es gibt drei Wege, um die aktualisierte URL in unser Makro zu bekommen.
- Wenn ihr das damals von mir vorgestellte Excel genutzt habt, dann könnt ihr einfach in den Code gehen und die URL ersetzen
- Alternativ könnt ihr das Makro aber auch mit einem neuen .csv File von Yahoo Finance einfach neu aufzeichnen (funktioniert genau, wie im ursprünglichen Artikel beschrieben)
- Ihr könnt das aktualisierte File aus der Toolbox auf DIY Investor runterladen
Im Folgenden möchte ich euch einmal ganz konkret die wesentlichen Anpassungen erläutern, die sich aus der Änderung der Yahoo Finance API im VBA Makro ergeben.
Variablen aktualisieren
Im ersten Schritt müssen wir sowohl die Variablen in unserem Makro neu definieren, als auch die Verlinkung zur URL herstellen.
Im einfachsten Fall benötigen wir für unser Makro nur drei Variablen:
- den Ticker (“ticker”)
- das Startdatum (“StartDate”)
- das Enddatum (“EndDate”)
Falls ihr auch gerne das Intervall vorgeben möchtet, könnt ihr dafür natürlich ganz einfach eine neue Variable festlegen. Gleiches gilt für den Datentyp, wenn ihr die Möglichkeit haben möchtet, nur die Dividenden herunterzuladen. Aus Vereinfachungsgründen habe ich das hier einmal so belassen, wie standardmäßig in der URL hinterlegt (Intervall = 1 Tag).
Die Variablen habe ich ganz oben im Makro einmal entsprechend festgelegt:
Diese Variablen referenzieren auf die entsprechenden Zellen im weiter oben dargestellten Excel Dashboard (z.B. Zelle C7 für das Startdatum).
Die URL passen wir ganz analog an. Wir ersetzen also beispielsweise den Ticker (AAPL) durch die zugehörige Variable und zwar im richtigen Format (nämlich ” & ticker & “). Genauso verfahren wir mit den Variablen StartDate und EndDate:
Damit sind wir eigentlich fast schon durch.
Herunterzuladende Spalten anpassen
Abschließend müssen wir nur noch berücksichtigen, dass das neue .csv File von Yahoo Finance ein etwas anderes Format hat, als in der Vergangenheit. Das neue .csv beinhaltet nun die folgenden Spalten:
- Date
- Open
- High
- Low
- Close
- Adj. Close
- Volume
Im aufgezeichneten VBA Code finden wir das relativ weit unten wieder:
Eine 9 steht hier für “Spalte weglassen”, eine 1 für “Spalte einfügen” und eine 4 für “Spalte im Datumsformat einfügen”. Ganz analog zur Auswahl, die ihr beim Aufzeichnen des Makros verwendet.
Wie ihr sehen könnt, übernehmen wir in diesem Fall nur das Datum (Date) sowie den Schlusskurs inklusive der Berücksichtigung historischer Aktiensplits (Adj. Close).
Excel zum Download
Falls ihr das neue Excel direkt im fertigen Zustand herunterladen möchtet, geht einfach auf unsere DIY Tools Seite.
1 Kommentar zu „Update Yahoo Finance API 2020: Historische Aktienkurse per VBA Makro ins Excel laden“
Hallo, das ist wirklich eine sehr gute Erklärung, wie man an die Daten kommt. Ich selber hatte auch lange nach eine Lösung gesucht und werde diese mal ausprobieren.
Ich selber hab mir eine Watchlist bei der ING erstellt und diese Watchlist in Excel mit Livedaten gefüttert. Diese Daten hab ich mir dann mit einem SVerweis in eine Extra Mappe übersichtlich darstellen lassen. Hier hab ich halt nur das Problem, das ich immer nur den aktuellen Kurs darstellen lassen kann.
Deswegen werde ich deine Variante mal ausprobieren ?.
Gruß Stefan