Ich habe vor kurzem viele E-Mails von Personen erhalten, die Karriere wechseln möchten von Ingenieurwesen, Wissenschaft und IT. Quantitative Finanzen sind aufgrund der intellektuellen Herausforderung und der hohen Vergütung in letzter Zeit zu einem besonders attraktiven Bereich geworden. Eine Frage, die sich ständig in diesen E-Mails stellt, ist: "Was muss ich studieren, um einen Interviewer davon zu überzeugen, mir einen Job zu geben?" Dies ist der erste in einer dreiteiligen Serie, in der diskutiert wird, wie man einen Selbststudiumsplan erstellt, um einen Job in der quantitativen Finanzbranche zu bekommen. Dieser Beitrag wird diskutieren, wie man sich selbst studiert, um ein quantitativer Entwickler zu werden. Die anderen beiden konzentrieren sich auf quantitative Analysten und quantitative Trader.
Jede Karriere im Bereich der quantitativen Finanzen erfordert eher ein gewisses Maß an Verallgemeinerung als eine umfangreiche Spezialisierung. Quantitative Entwickler sind nicht anders. Sie müssen in ein Team aus Händlern, Finanzingenieuren und IT-Unterstützung passen, um Investmentbanken bei der Bewertung und dem Verkauf neuer strukturierter Anlageprodukte zu unterstützen oder Fonds bei der Entwicklung von Handelsinfrastrukturen und Portfoliomanagementsystemen zu unterstützen.
Wissenschaftliche Computer
Der häufigste Weg in die quantitative Entwicklung ist über einen akademischen Hintergrund in der wissenschaftlichen Informatik. Dies liegt daran, dass die für eine
Wenn Sie jedoch keinen Hintergrund in der wissenschaftlichen Informatik haben, gibt es immer noch viele Möglichkeiten, ein quantitativer Entwickler zu werden, der einen Hintergrund in der Programmierung nutzt.
Programmierkenntnisse
In erster Linie ist ein quantitativer Entwickler ein Softwareentwickler. Die Rolle wird daher fast ausschließlich auf 100% Programmierung basieren. Sie werden feststellen, dass Sie Handelsprototypen optimieren oder eine Handelsinfrastruktur von Grund auf entwickeln. Wenn Sie Bankrollen anstreben, müssen Sie wahrscheinlich C ++, Java oder C # in einer Microsoft / Windows-Umgebung verwenden. Wenn Sie Hedgefonds anstreben, dann werden Sie wahrscheinlich MatLab oder R in C ++ und / oder Python übersetzen. Fonds neigen dazu, Java und C # weniger zu verwenden, da sie oft in einer UNIX-Umgebung, in der C ++ und Python sinnvoller sind. Wenn Sie einen Hintergrund in einer dieser Programmierumgebungen haben, ist es sinnvoll, Ihre Stärken zu erkennen und an der Software zu bleiben, die Sie gut kennen. Wenn Sie Java zum Beispiel kennen, wäre es ratsam, Investment Banking-Rollen zu zielen.
Angenommen, Sie sind ein kompetenter Programmierer und sind glücklich, auf die in der Finanzindustrie am häufigsten verwendete Software zu wechseln, dann würde ich vorschlagen, C++ und Python extrem gut zu lernen, da dies Ihnen die meisten Querschnittsfähigkeiten in verschiedenen Bereichen der Industrie bietet.
Lesen Sie die gesamte Beschleunigte C++ von Andrew Koenig durch. Dieses Buch wird Sie auf die C++-Syntax auf den Grund bringen und insbesondere auf Zeiger und Speicherverwaltung eingehen. Dies ist ein Bereich, mit dem viele Programmierer (einschließlich von Java und C#) nicht so vertraut sind. Es ist am besten, die Beispiele entweder mit Microsoft Visual Studio oder dem GCC-Compiler auf Linux/UNIX zu lesen, um die Syntax zu üben, anstatt sie nur zu lesen! Lesen Sie (mehrmals!) das gesamte Buch Effective C++ von Scott Meyers durch. Ich habe diesen Rat konsequent auf der ganzen Website wiederholt, aber es lohnt sich immer noch zu sagen. Dieses Buch führt Sie von einem Anfänger C++-Programmierer zu einem mittleren Programmierer, der bereit für ein Interview ist. Dieses Buch ist schwieriger, tatsächlich vor dem Terminal zu üben, da Meyers einige komplizierte Beispiele aufstellt. Eine Möglichkeit, dieses Buch durchzuführen, wäre zu bestimmen, wo in Ihren eigenen Projekten Sie die Muster anwenden können. Wenn Sie sich direkt für C++-Jobs bewerben, möchten Sie wahrscheinlich über diese beiden Arbeiten hinausgehen. Scott Meyers hat auch mehr effektives C++ und effektives STL geschrieben. Das gleiche gilt für Python:
Wenn Sie bereits ein erfahrener C++/Java/C#-Programmierer sind, dann lesen Sie bestimmte Abschnitte von Learning Python von Mark Lutz durch. Insbesondere schauen Sie sich die Kapitel 4-9 an, in denen Python
Softwareentwicklung
Um ein guter Interviewkandidat für eine Position als Quantentwickler zu sein, muss man sowohl ein guter Programmierer als auch ein guter Softwareentwickler werden. Viele können das erstere aus Lehrbüchern und Praxis lernen. Letzteres kann jedoch nur durch die Arbeit an größeren Softwareprojekten, in der Regel mit anderen Entwicklern, gelernt werden. Dies bedeutet jedoch nicht, dass es nicht in ein Heimstudium integriert werden kann! Zum Beispiel ist es jetzt einfach, über das Internet an Open Source-Softwareprojekten beizutragen.
QuantLib
Das Lesen (einiger) des Quellcodes dieses Projekts gibt Ihnen eine gute Vorstellung davon, wie groß angelegte C++-Softwareprojekte geschrieben werden.
Um ein guter Softwareentwickler zu werden, ist es notwendig, zu verstehen, wie man groß angelegte Softwareprojekte erstellt.Für die moderne Softwareentwicklung erfordert dies die Verwendung von Versionskontrolle, kontinuierlicher Integrationund anderer agiler Praktiken.Hier ist ein Studienplan, der Ihnen hilft, diese Konzepte zu verstehen:
Lesen Sie sowohl Steve McConnell's Code Complete als auch Robert Martin's Clean Code durch. Beide Bücher werden Sie dazu bringen, ernsthaft zu überdenken, wie Sie Software entwerfen, von den ersten Prinzipien aus. Zum Beispiel - wie viel Zeit verbringen Sie im Voraus mit der Gestaltung Ihrer Software, bevor Sie die Tastatur berühren? Beide Bücher werden Ihnen Stunden verschwendeter Codeentwicklung ersparen. Ich würde vorschlagen, so schnell wie möglich viele der Tipps in diesen Büchern auf Ihre Projekte anzuwenden, um schlechte Gewohnheiten zu beseitigen. Sie sind auch großartig, um bei einem Interview zu diskutieren, da Sie unweigerlich gebeten werden, etwas Code zu schreiben.
Eine Diskussion über gutes Software-Handwerk wäre nicht vollständig, wenn wir Design Patterns, auch bekannt als das
Obwohl ein hervorragender Programmierer und ein hervorragender Softwareentwickler zu werden, die Voraussetzungen für eine Interviewstellung sind, werden Sie auch Fragen in Bezug auf Datenspeicherung und Analyse gestellt. Eine der wichtigsten Komponenten im Alltag eines Quant-Entwicklers ist die Interaktion mit Datenbanken. Somit ist ein gewisses Maß an Reife bei der Datenbankverarbeitung zu erwarten. Wenn Sie noch nie ein Datenspeichersystem verwendet haben, dann ist der beste Weg, um zu beginnen, mit dem Verständnis von Relational Database Management Systems (RDBMS) und ihrer Sprache zu beginnen - Structured Query Language (SQL).
Der beste Weg, um über RDBMS zu lernen, besteht darin, eine Open-Source-Version zu installieren (da Sie sie kostenlos herunterladen können!) und der folgenden Leseliste zu folgen. Es ist außerhalb des Umfangs dieses Artikels, Ihnen beizubringen, wie Sie ein RDBMS installieren, aber Sie können MySQL ausprobieren, da dies eine sehr verbreitete Datenbank innerhalb von Hedgefonds ist. SQL Server und Oracle sind eher im Bankwesen verbreitet. Sobald Sie eine Datenbank wie MySQL installiert haben, verwenden Sie die folgenden Anleitungen, um Ihnen zu helfen, Speicherung und Zugriff auf Daten zu verstehen:
Wenn Sie nicht mit SQL vertraut sind, dann ist das O
Da ein quantitativer Entwickler in den Finanzmärkten arbeitet, ist es nützlich, ein relativ gutes Verständnis für die Produkte zu haben, die Banken produzieren oder die Instrumente, mit denen Fonds gehandelt werden. Daher ist es notwendig, sich (weit) mit den Aktien-, Devisen-, Anleihemärkten, Rohstoffen und verwandten Derivatemärkten vertraut zu machen.
Wichtiger sind die Algorithmen, die in der quantitativen Finanzwissenschaft zur Durchführung von Instrumentenpreisen und algorithmischem Handel verwendet werden. Die Preisgestaltungstechniken der Investmentbanken werden sich mit ziemlicher Sicherheit auf die Monte-Carlo-Methode und die Finite-Differenz-Methode konzentrieren, die beide auf Kenntnissen von Wahrscheinlichkeiten, Statistiken, numerischer Analyse und partiellen Differentialgleichungen beruhen.
Für Hedgefonds werden Sie wahrscheinlich eine Handelsinfrastruktur implementieren - entweder mit niedriger oder hoher Frequenz. Dies beinhaltet einen Algorithmus, der bereits in MatLab, R oder Python (oder sogar C++) codiert ist, und ihn dann in einer schnelleren Sprache wie C++ optimieren, sowie diesen Algorithmus an eine Prime-Brokerage-Anwendungsprogrammierschnittstelle (API) anschließen und Trades ausführen. Die hier erforderlichen Fähigkeiten sind ziemlich unterschiedlich. Sie müssen in der Lage sein, Daten aus verschiedenen Quellen zusammenzuziehen, in den richtigen Kontext zu bringen, schnell zu iterieren und dann On-Demand-Berichte entweder im festen Format (PDF), über das Web oder als API selbst zu generieren. Diese Fähigkeiten sind schwer aus Büchern direkt zu lernen und erfordern ein paar Jahre Erfahrung in der Softwareentwicklung.
Um mehr über diese Themen zu erfahren, lesen Sie bitte meine Artikel über C++ Implementierung, meine Artikel über Python Implementierung und die Quantitative Finance Reading List.
Bewerbungen für Jobs
Obwohl die obige Liste wie eine umfangreiche Menge an zu studierendem Material aussieht, ist dies nur für jemanden, der völlig neu in der Programmierung ist, der Fall. Es ist unwahrscheinlich, dass eine quantitative Entwicklerposition für eine solche Person geeignet wäre und ich nehme an, dass Ihr eigener Hintergrund in der Programmierung oder den Physikalischen Wissenschaften liegt. Achten Sie darauf, nur die Abschnitte zu lesen, die Sie für relevant halten Ihre eigene Situation, da Sie sonst leicht ein paar Jahre Ihrer Freizeit damit verbringen könnten, das oben genannte Material zu lernen!
Sobald Sie glauben, dass Sie für ein Interview bereit sind, müssen Sie mit der Kontaktaufnahme mit quantitativen Personalvermittlern beginnen. Es gibt spezialisierte Firmen, die sich mit Investmentbanken und Hedgefonds befassen. Wenn Sie spezifische Namen benötigen, dann können Sie mir per E-Mail anmike@quantstart.comUnd ich werde dich gerne in die richtige Richtung führen.
Jeder gute Personalvermittler wird Ihren Hintergrund in angemessenem Detail diskutieren, da er seinen Ruf aufs Spiel setzt, wenn er Sie für ein Interview empfiehlt. Personalvermittler sind im Allgemeinen nicht sehr vertraut mit den Techniken der quantitativen Technologie und müssen es auch nicht sein. Dies bedeutet jedoch, dass sie sich mehr auf
Da der Arbeitsmarkt (im Jahr 2013) derzeit nicht der beste ist (insbesondere für Einsteiger), kann es für Sie eine Weile dauern, bis Sie den Job finden, den Sie suchen.Der Trick besteht darin, sich ständig zu bemühen, denn bei jedem Vorstellungsgespräch, an dem Sie teilnehmen, erhalten Sie mehr Wissen darüber, wonach die Personalvermittler und Interviewer suchen, und können so Ihr Studium darauf ausrichten.