In den letzten 2-3 Jahren habe ich – jedenfalls würde ich das rückblickend so sehen – vergleichsweise viel Zeit in die Automatisierung des Downloads von Finanzdaten (historische Kursdaten bzw. Fundamentaldaten) nach Excel bzw. Google Sheets gesteckt. Nach allen Erfahrungen, die ich dabei gemacht habe, würde ich mich Stand heute nicht zu einer Aussage hinsichtlich der langfristigen Funktionalität einzelner APIs oder Makros hinreißen lassen. Zu oft wurden APIs abgeschaltet, Strukturen von Webseiten geändert und Nutzungsbedingungen angepasst. Trotzdem gibt es aber nach wie vor gute (und auch kostenlose) Lösungen… wenn man denn auf bestimmte Infos verzichten kann (für alle anderen gibt es z.B. günstige Bezahllösungen wie MarketXLS).
Dieser Artikel ist also für alle diejenigen unter euch, die versuchen, sich auf der Suche nach einem automatisierten Download von Finanzdaten ins eigene Spreadsheet im Dschungel der verschiedenen Programmieroptionen, APIs und Spreadsheet-Programme zurechtzufinden. Ich hoffe, dass dieser Überblick einigermaßen weiterhilft… ihr könnt natürlich gerne ergänzen, wenn euch weitere Optionen über den Weg gelaufen sind.
Zunächst mal eine kurze Übersicht. Here we go!
Optionen für den automatisierten Download ins eigene Spreadsheet
Bzgl. des Downloads von Finanzdaten gibt (bzw. gab) es die verschiedensten Möglichkeiten, insbesondere:
- die API von Yahoo! Finance (historische Kursdaten und Echtzeitdaten bzw .Fundamentals)
- die API von Google Finance (historische Kursdaten und Echtzeitdaten bzw. Fundamentals)
- die API von Alpha Vantage (nur Kursdaten)
- Web Scraping mittels VBA, z.B. über XML oder JSON (historische Kursdaten und beliebige Fundamentaldaten)
Wenn ich von einem Spreadsheet spreche, dann meine ich übrigens entweder Microsoft Excel oder Google Sheets (bzw. Google Tabellen im Deutschen). Wie ihr weiter unten noch sehen werdet, können auch Daten von Yahoo! Finance nach Google Sheets importiert werden (was meiner Meinung nach aktuell die eleganteste Option für den Datenimport darstellt… aber dazu später mehr).
Im Folgenden möchte ich jede der einzelnen Optionen einmal etwas näher beleuchten und auch darstellen, welches Tool für welchen Zweck heute am besten funktioniert (ihr werdet sehen, dass auch Yahoo! Finance heute noch sehr nützlich ist, auch was den automatisierten Import ins Spreadsheet angeht).
1. Yahoo Finance API
Angefangen hat alles mit der Yahoo! Finance API. Das erste Tool für den Excel-Import habe ich schätzungsweise Ende 2015 gebaut. Mithilfe der API von Yahoo! Finance war es relativ einfach möglich, sowohl historische Aktienkurse eines bestimmten Unternehmens, als auch verschiedene Echtzeitdaten wie das KGV, 52-Wochen-Tiefstände, Dividendenrendite etc. automatisiert per VBA-Makro über einen CSV-Download nach Excel zu importieren.
Diese Daten konnten bequem sowohl für das Screenen, als auch für die Bewertung sowie das Portfoliotracking verwendet werden.
2. Google Finance
Nachdem Yahoo! Finance nicht mehr funktionierte, habe ich mir die nächste logische Alternative, nämlich Google Finance angeschaut. Zunächst habe ich mich noch etwas vor der Nutzung von Google Sheets gescheut und ein Download-Tool für den Import historischer Kurse von Google Finance nach Excel gebaut. Nach einer gewissen Zeit wurde allerdings zunächst der herunterladbare Zeitraum auf ein Jahr beschränkt, kurz danach dann die API komplett abgeschaltet.
Was aber nach wie vor funktioniert ist der Import nach Google Sheets. Google bietet ja mit Google Sheets ein Konkurrenzprodukt zu Excel an, in das man die Aktienkurse von Google Finance sehr bequem (mithilfe der integrierten GOOGLEFINANCE Funktion) reinziehen kann.
Darüber hinaus – und das habe ich selbst erst kürzlich entdeckt… heißt ein Beitrag und ein zugehöriges Tool dazu kommen in Kürze noch – können wir mithilfe der Funktion IMPORTXML recht einfach fehlende Fundamentaldaten von Yahoo! Finance oder Onvista (oder von irgendwo anders) nach Google Sheets importieren. Dies ist relevant, weil die GOOGLEFINANCE Funktion standardmäßig nicht viel mehr als den Aktienkurs, den Gewinn je Aktie (EPS) und das KGV (P/E Ratio) liefert.
Wir haben also die Möglichkeit, relativ einfach einen Screener inkl. ROE, Dividendenrendite, P/E etc. zu erstellen, der nach meinen ersten Tests auch Daten für deutsche Aktien (!!) liefert.
Von der Logik her funktioniert IMPORTXML übrigens ähnlich zum von mir vor einigen Wochen vorgestellten Web Scraping Ansatz.
3. Alpha Vantage
Alpha Vantage war ja so etwas wie der neue Hoffnungsträger aus dem Bereich der Finanzdaten-APIs. Für den Download historischer Kursdaten einer bestimmten Aktie funktioniert Alpha Vantage nach wie vor einwandfrei.
Wie einige von euch vielleicht mitbekommen haben, hatte ich allerdings erst kürzlich auch mein Portfolio Tracking Tool (zu finden zum Download auf der DIY Tools Seite) auf die Alpha Vantage JSON-API umgestellt… nur um kurze Zeit später festzustellen, dass Alpha Vantage kostenfrei nur noch 5 Abfragen je Minute erlaubt. Das Tool zieht also aktuell bestenfalls den EUR/USD Wechselkurs sowie 4 weitere Aktienkurse ins Excel rein. Ein Portfoliotracking funktioniert also nur, wenn man wie Mohnish Pabrai ein extrem konzentriertes Portfolio managt (Pabrai hat aktuell nur zwei Aktien im Portfolio, nämlich Fiat Chrysler und Ferrari).
4. Web Scraping mit VBA
Die anspruchsvollste, aber gleichzeitig auch die flexibelste Variante ist das Web Scraping. Web Scraping mit VBA funktioniert im Grunde genommen für Daten jeder beliebigen Webseite und erfordert keine bestimmte API. Eine gute Daten- bzw. URL-Struktur hilft allerdings. Daten können darüber hinaus viel einfacher gezogen werden, wenn die Webseite auch in JSON verfügbar ist. Alternativ können wir – wie im Artikel zum Web Scraping vorgestellt – in der XML bzw. HTML-Struktur die richtige Stelle ansteuern.
Hört sich alles super an, wären da nicht die Nutzungsbedingungen der verschiedenen Webseitenbetreiber. Analog zu Alpha Vantage habe ich z.B. den Import der Aktien- und Wechselkurse des Portfolio Tracking Tools einmal mithilfe eines Scrapers der JSON-Version einer sehr bekannten Finanzwebseite (allerdings nicht Yahoo! oder Google Finance) automatisiert sowie auch einen entsprechenden Screener gebaut. Allerdings wurde ich nach kurzer Zeit prompt wegen eines Verstoßes gegen die Nutzungsbedingungen der Seite gesperrt (wie lange ich gebraucht habe, um das zu bemerken… ich dachte die ganze Zeit, es liegt am Code…).
Auch hierfür gibt es natürlich Lösungen, wie Proxy Server / IP-Verschleierung etc. (könnt ihr z.B. hier nachlesen). Allerdings bewegt man sich damit recht schnell in einer rechtlichen Grauzone, auch wenn man die Daten nur privat nutzt. Aus diesem Grund habe ich davon erstmal Abstand genommen. Vielleicht stelle ich die grundsätzliche Logik aber trotzdem später einmal in einem Post vor.
Was (für mich) funktioniert
So, nun solltet ihr einmal einen guten Überblick über die von mir bisher betrachteten Optionen zum automatischen Importieren von Finanzdaten nach Excel bzw. Google Sheets haben.
Was funktioniert aber nun ganz praktisch am besten, d.h. lässt sich einfach umsetzen, liefert vergleichsweise gute Daten und funktioniert stabil? Hier würde ich nun zwischen Portfolio Tracking, Screening und der Bewertung einzelner Unternehmen unterscheiden.
Portfolio Tracking
Da für das Portfolio Tracking eigentlich nur die Aktienkurse für viele verschiedene Ticker sowie ggf. die entsprechenden Wechselkurse benötigt werden, ist hier für mich Google Sheets in Kombination mit Google Finance die bevorzugte Variante. Die Daten sind außerdem immer online und von jedem Gerät aus zugänglich.
Eine aktualisierte Version des Portfolio Tracking Tools in Google Sheets werde ich in Kürze auf der DIY Tools Seite zum Download zur Verfügung stellen.
Screening
Auch für das Screening setze ich nach meinem Ausschluss der Web Scraping Option auf Google Sheets. Dabei nutze ich soweit möglich die in Google Sheets integrierte GOOGLEFINANCE Funktion (für Währung, Aktienkurs, 52-Wochen-Hoch und -Tief, P/E, EPS) und importiere weitere hilfreiche Daten (i.W. Dividende und Dividendenrendite sowie die Eigenkapitalrendite/ROE) mithilfe der IMPORTXML Funktion von Yahoo! Finance bzw. Onvista.
Dem Hinzufügen weiterer Kennzahlen wie z.B. Payout Ratio, EBIT-Marge oder ROA sind dabei erstmal keine Grenzen gesetzt.
Valuation
Für die konkrete Bewertung setze ich aktuell auf die historischen Kursinfos von Alpha Vantage (mein Bewertungstool habe ich auch noch in Excel). Für die detaillierten Financials (GuV, Bilanz, Cash Flow Statement) nutze ich als Ausgangspunkt die Excel-Daten der SEC (nur US-Unternehmen) bzw. die CSV-Downloads von Morningstar.
What’s next?
Wie oben bereits angesprochen: Ergänzt bitte gerne meine Übersicht an Download- bzw. Automatisierungsoptionen. Ich bin für jeden Hinweis bzw. Input zu guten Datenquellen dankbar!
12 Kommentare zu „Finanzdaten ins Spreadsheet importieren: Was funktioniert… und was nicht“
Hallo Axel
habe mir jetzt ein Trading Journal mit excel 2016 Erstellt
und hole mir per Power Query einfach Kurswert von z. B. Investing.com
Es funktioniert
Neben bei kann man sich die Tabellen noch zurecht Editieren
Sind das die gleichen Werte wie mit den Komplizierten APIs und Co. ?
Kannst du mir dazu etwas Mitteilen
Danke im voraus
MfG.
Andi,
Hallo Andi,
die Werte wären nur gleich, wenn Investing.com auf die gleichen Daten zugreift wie z.B. Yahoo! Finance. Wenn du aber sowohl die API von Yahoo! Finance nutzt (hypothetisch), als auch deinen Power Query über Yahoo laufen lässt, dann sollten das aus meiner Sicht die gleichen Daten sein.
Power Queries werde ich mir als Nächstes auch mal ansehen.
Viele Grüße,
Axel
Guten Tag,
da es bei Excel 2016 mac ohnehin keine Möglichkeit gibt die Daten zu importieren denke ich das es sinnvoll ist sich ein Musterdepot anzulegen (finance.net oder comdirect.de) und sich dies von dort als CSV-Datei zu exportieren.
Nur von dort diese in die Datei zubekommen habe ich keine gute Lösung gefunden, ausser die Kurse zu kopieren. Also viel aufwand und Handarbeit.
Die CSV-Datei lösche ich nach Übertragung der Kurse, somit scheidet ein SVerweis oder ähnliches aus. Schließlich möchte ich die CSV-Dateien nicht alle aufbewahren.
Hier fehlt mir noch eine vernünftige Lösung!
Danke für diese Übersicht. Ich dachte, ich kenne mich mit den verfügbaren APIs und Datenanbietern schon umfassend aus. Und doch habe ich eine neue Information gefunden, die mir dabei helfen wird die verfügbaren Daten auf meinem Projekt divipedia.de zu verbessern. Vielen Dank dafür. Und auch allgemein zu dieser Seite hier: Gratuliere, klasse Arbeit! Da steck sehr viel Mühe und vor allem wertvoller Content drin.
Hi,
ich versuche mich auch gerade daran etwas zu basteln. Leider kann & will ich formeltechnisch noch nicht komplett zu Google Sheets wechseln.
Daher exportiere ich zur Zeit als .csv und importiere in Excel. Funktioniert auch soweit nur läuft die Aktualisierung nicht sauber durch. Bekomme häufig CSVs die mit “Wird geladen…” oder leeren Zellen daherkommen.
Hast du da inzwischen eine gangbare Lösung gefunden?
Ich glaub das Problem ist, dass Google Sheets irgendwo eine Begrenzung hat, was die Anzahl an Formeln angeht. Für mein Portfoliotool ist das kein Problem, beim Screener arbeite ich mit Auswahllisten, d.h. ich hab auf einem Sheet die Formeln und hole mir dann die Ticker für sagen wir mal die “German Small Caps” Liste oder die “US Stocks” Liste per Index-Funktion von einem anderen Sheet. So habe ich immer nur eine begrenzte Anzahl an Zeilen/Datenpunkten, die gezogen werden müssen. Funktioniert ganz gut, ist aber keine 100%-Lösung.
Axel –
ist der CSV Download von Morningstar kostenlos – oder bist Du ein Morningstar Direct User? Der Verweis auf die SEC Daten ist super. Gibt es dort auch die 10ks oder nur die Quarterly Data?
Bin nämlich auf der Suche nach einer Website oder einem Datensatz, mit dem ich eigene Finanzkennzahlen en masse für meine konstruierte Anlagestrategie entwicklen und backtesten kann.
Nico
Nico
Hallo Axel,
großes Lob an deine Seite und die bereitgestellten Tools!
Ich hätte direkt auf Spenden geklickt, wenn ich einen Button gesehen hätte.
Kurze Frage von einem absoluten Neuling.
Ich muss für eine empirische Arbeit eine Auswertung in Excel fahren.
Ich untersuche die Auswirkungen von bestimmten Katastrophen auf die Kurse einzelner Aktieneerte (hier speziell Naturkatastrophen auf Versicherungen).
D.h. ich habe eigentlich nur die Anforderung historische Kurswerte für einen bestimmten Zeitraum (i.d.R. 200 Tage vor dem Schadenereignis und 5 Tage danach) von oben nach unten in Excel einzufügen.
Bspw. würde ein Sheet so aussehen:
Kurse der Allianz – Kurse des Vergleichsindex Kurse der Münchener Rück – Kurse des Vergleichsindexes
Alles nebeneinander.
Mir wäre es natürlich am liebsten, wenn ich die historischen Kurse per Excelfunktion einbinden kann.
Hast du dafür eine Empfehlung für mich?
Ich denke, dass in dieser Form nur MarketXLS hilft oder?
LG Johannes
Hallo Johannes,
mit MarketXLS oder Finbox würde das gehen. Ich denke aber z.B. auch mit AlphaVantage oder (wieder) Yahoo Finance, wenn es sich nicht um zu viele Werte handelt.
Beste Grüße,
Axel
Hi,
Excel hat eine neue Funktion mit der man die Kurse (15 min. verzögert) abrufen kann ohne eine Anbindung an Yahoo oder Google.
VG
Faruk
Hi,
auch ging Onvista sehr schön, bis vor kurzem, jetzt geht da nur noch der manuell Download der CSV.
Was gibt es hier neues?
Liebe Grüße und HappyInvesting Zenephone
Hallo Zenephone,
ich nutze inzwischen TIKR und Finbox als Tools für meine Finanzdaten und habe mich daher in letzter Zeit nicht mehr intensiv mit neuen Optionen beschäftigt. Es scheint allerdings so zu sein, dass keine dieser VBA-basierten Optionen für lange und nachhaltig funktioniert leider.
VG, Axel