Wie ich Python gelernt habe – Pandas

Über mich

Ich bin ein Bachelor in Betriebswirtschaftslehre von der Universität von São Paulo, Brasilien. Mein Hintergrund war schon immer im Finanzbereich mit Schwerpunkt auf Kapitalmärkten. Jetzt habe ich meine wahre Leidenschaft gefunden: das Programmieren.

Warum ich Python lernen wollte – Pandas

Ich bin fest davon überzeugt, dass die Automatisierung in den kommenden Jahren alle Bereiche der Investmentbranche erobern und sie kosteneffizienter und zugänglicher machen wird. Mein Ziel ist es, das IT- und das Finanzwissen zusammenzuführen, um diesen Übergang für die Welt so vorteilhaft wie möglich zu gestalten.

Das Erlernen der Programmierung war der erste und vielleicht wichtigste Schritt, um mich als aktiver Agent in diesem Prozess zu positionieren, und als ich herausfand, wie Finanzen und Programmierung miteinander kommunizieren, machte beides extrem viel Spaß. Jetzt gilt es, hart daran zu arbeiten, sie so lebensfähig wie möglich zu machen.

Wie ich an das Lernen von Python herangegangen bin – Pandas

Wenn Sie nicht aus der Informatik kommen und das Programmieren so schnell und so tief wie möglich lernen möchten, ist mein Rat, von Anfang an mit einer sehr schwierigen Herausforderung zu beginnen. In meinem Fall wollte ich ein Risikosystem erstellen, das die durchschnittliche Laufzeit (Duration) und die parametrischen und nichtparametrischen VaRs der Portfolios der Hedgefonds berechnet. Diese Herausforderung kann in die folgenden Schritte unterteilt werden:

  1. Erhalten Sie die Portfolios in einer sehr gut strukturierten Datenform. In meinem Fall hatte jedes Portfolio seine XML-Form, also musste ich die XML-Bäume parsen, um einen lesbaren Pandas DataFrame zu erstellen.

  2. Für jedes Portfolio gibt es ISINs (die „ID“ eines Vermögenswerts), Mengen und Gesamtwerte. Ausnahme ist das Geldkonto, da es eigentlich keine ISIN hat.

  3. Für jede ISIN ist es möglich, die historische Preistabelle zu finden. In dem Hedgefonds, für den ich früher gearbeitet habe (und so ziemlich jedem Fonds), gibt es ein Bloomberg-Terminal. Es ist möglich, das Terminal über die Bloomberg-API für Entwickler mit Python zu “verbinden” ^^. Da die Daten roh abgerufen werden, empfehle ich die Verwendung von Python-Paketen wie tia und blpinterface: Sie wandeln alle abgerufenen Daten in schöne Pandas-DataFrames um.

  4. Jetzt, da wir alle Daten haben, ist es Zeit, die Berechnungen durchzuführen. Jedes Portfolio hat seine eigenen prozentualen Gewichtungen für jeden gegebenen Vermögenswert und dies kann als Matrix geschrieben werden. Die parametrischen und nicht parametrischen VaRs sind im Grunde Multiplikationen der ersten Matrix mit den historischen Preisen (natürlich ist dies eine große Vereinfachung). Das Ergebnis sollte ein einzelner Wert sein, der das Risiko angibt. Eine ähnliche Überlegung gilt für die Berechnung der Dauer. Wenn Sie noch weiter verstehen möchten, was VaR ist, empfehle ich diese Seite:

  5. Da alle Daten in ein einziges Blatt eingetragen werden konnten und es möglich war, sie in HTML zu konvertieren, war es möglich, sie wie im Textkörper zu verwenden, wenn ich automatisierte E-Mails an meine Kollegen schickte. Schließlich war dies das letzte Ziel meiner Aufgabe.

Nun, Arbeit erledigt 😄

Herausforderungen, denen ich mich gestellt habe

Das erste Problem, mit dem ich konfrontiert war, war das Abrufen der XML-Dateien der Portfolios. Sie kamen per Post … Also habe ich Folgendes getan:

  • Ich habe diesen Code auf GitHub gefunden. Er lädt alle Anhänge in einen einzigen Ordner herunter. Das Problem mit diesem Code ist, dass er sehr, sehr langsam ist und ich nicht immer alle Anhänge heruntergeladen habe, sondern Dateien heruntergeladen habe, die bestimmte Schlüsselwörter oder die neuesten Dateien (dh aus den letzten 150 E-Mails) enthielten. Also habe ich es (hart) bearbeitet.
  • Der Anhang für dieses Projekt (und einige andere) wurde auf einmal heruntergeladen. Danach würden sie in andere Ordner verschoben, aus denen Skripte sie lesen würden.
  • Diese Routine würde viele, viele Male während des Tages passieren, um nichts zu verpassen.

Eine weitere Herausforderung besteht darin, dass die Daten meistens unterschiedliche Strukturen aufweisen, was die Verwaltung erschwert. In Schritt 3 des Lernprozesses, den ich bereits erwähnt habe, stimmten die ISINs der Portfolios nicht mit dem Tickersystem von Bloomberg überein, also musste ich mein eigenes Wörterbuch entwickeln, um auf beide zu verweisen. Bloomberg bietet keine schöne Tabelle mit ISINs und ihren jeweiligen Bloomberg-Tickern … Also musste ich selbst eine erstellen. Die Lösung besteht darin, die “SECF”-Funktion im Terminal zu verwenden und einige Stunden damit zu verbringen, die Daten zusammenzustellen und im CSV-Format zu speichern.

Die letzte (und schwierigste Herausforderung) war, dass ich herausfand, dass viele der XML-Dateien einfach falsch waren. Dies hat mich viele Anrufe mit dem Makler gekostet, um behoben zu werden.

Die zentralen Thesen

Nichtsdestotrotz ist Oriented-Oriented-Programing ein Muss, um dieses Projekt so einfach wie möglich zu gestalten. Wenn Sie ein Anfänger sind, empfehle ich Python dringend, das OOP-Konzept zu assimilieren. Danach ist das Erlernen jeder anderen Sprache eine Frage der Syntax.

Tipps und Ratschläge

Beim Programmieren geht es, wie bei traditionellen Prozessen, um die Steuerung und Manipulation von Informationsflüssen. Je eleganter der Code geschrieben ist und je eleganter Prozesse gestaltet sind, desto effizienter wird das Endprodukt. Zu sehen, wie sich die Produktivität mit dem x-fachen multipliziert und die y-Kosten senkt, ist äußerst lohnend.

Und es macht super viel Spaß.

Nächste Schritte

Finden Sie das nächste extra coole Problem, das es zu lösen gilt! 😄

Similar Posts

Leave a Reply

Your email address will not be published.