Education

Top Quant C ++ - Bibliothek für die quantitative Finanzierung

Is C++ used for Algo Trading? #AlgoTradingAMA (Dezember 2018).

Anonim

Die C ++ - Bibliotheken, die vom algorithmischen Handel bis hin zu Financial Engineering-Problemen reichen, spielen eine Schlüsselrolle in rechenintensiven Bereichen, die im Wesentlichen hochqualifiziertes Fachwissen in den Bereichen Finanzen, Mathematik und Statistik erfordern. Einer der Hauptvorteile von C ++ - Bibliotheken besteht darin, dass sie extrem schnell und robust sind und in Hochleistungs-Computeranwendungen am häufigsten verwendet werden. Die meisten Hochfrequenz-Handelsunternehmen und sogar professionelle (nicht-HFT) algorithmische Handelsunternehmen verwenden C ++ / C für das Backtesting und die Erstellung von Strategien.

Werfen wir einen Blick auf einige der beliebtesten Quant C ++ - Bibliotheken.

QuantLib - ist eine C ++ Bibliothek für quantitative Analysten und Entwickler. Das QuantLib-Open-Source-Projekt wurde im Jahr 2000 bei der italienischen Boutique RiskMap (heute StatPro Italia) gestartet. Das erste QuantLib-Paket wurde im Dezember 2000 unter einer liberalen BSD-Lizenz veröffentlicht. Dadurch konnten die Banken und Softwareunternehmen den Code erweitern und ändern, ohne ihn zurückgeben zu müssen. Das Projekt hat heute mehr als 150 Mitwirkende, von denen einige wesentliche Beiträge leisten. QuantLib benötigt Boost C ++ Bibliotheken als Voraussetzung und muss separat für Ubuntu und Windows installiert werden

Viele verschiedene Module werden von Quantlib unterstützt. Einige der wichtigsten Module sind Numerische Typen, Quantlib-Makros, Dienstprogramme, Währungen und FX-Raten, Entwurfsmuster, Datums- und Zeitberechnungen, Math-Tools (Pseudozufallszahlengeneratoren, Wurzelfindungsalgorithmen und Optimierungsmethoden), Finite-Differenzen-Framework, Lattice Methoden, Monte-Carlo Framework, Cashflows, Term Structures, Indizes, Quotes, Pricing Engines, Finanzinstrumente, Equity Models, Marktmodelle, Modelle für kurzlaufende Modelle, Volatilitätsmodelle, Stochastische Prozesse.

Quantlib kommt auch als ein Quantlib Excel Addin und exportiert die Funktionalität der QuantLib C ++ - Analysebibliothek nach Microsoft Excel. QuantLib ist als C #, Guile, Java, MzScheme, Perl, Python und Ruby Modul mittels SWIG verfügbar. Experimentelle Bindungen zu GNU R und Objective Caml sind ebenfalls verfügbar.

Armadillo - Armadillo ist eine hochwertige lineare Algebra-Bibliothek (Matrix Mathe) für die C ++ Sprache, die auf ein gutes Gleichgewicht zwischen Geschwindigkeit und Benutzerfreundlichkeit abzielt. Seine Syntax ist Matlab / Octave sehr ähnlich. Es kann für direkte Anwendungen im maschinellen Lernen, Mustererkennung, Computer Vision, Signalverarbeitung, Bioinformatik, Statistik, Finanzen usw. verwendet werden. Es bietet verschiedene Matrix-Dekompositionen und effiziente Klassen für Vektoren, Matrizen, Würfel, Integer, Fließkomma und komplexe Zahlen Operationen.

Armadillo wird mit Compilern arbeiten, die die älteren C ++ 98 und C ++ 03 Standards sowie die neueren C ++ 11 und C ++ 14 Standards unterstützen. Armadillo bietet auch Bindungen / Schnittstelle zu Python (Armanpy) und R (RcppArmadillo Erweiterung).

Eigen - Eigen ist eine C ++ Template Bibliothek für lineare Algebra: Matrizen, Vektoren, numerische Solver und verwandte Algorithmen. Es wird auch als Alternative zur Armadillo-Bibliothek betrachtet. Eigen unterstützt alle Matrixgrößen, von kleinen Matrizen mit fester Größe über beliebig große Matrizen bis hin zu dünnen Matrizen. Es unterstützt verschiedene Matrix-Dekompositionen, Geometrie-Features, numerische Standardtypen, einschließlich komplexer Ganzzahlen, und kann leicht auf benutzerdefinierte numerische Typen erweitert werden. Eigen hat keine Abhängigkeiten außer der C ++ - Standardbibliothek. Eigen ist Standard C ++ 98 und sollte daher theoretisch mit jedem kompatiblen Compiler kompatibel sein.

Boost - ist eine große Sammlung von Peer-Review-Code für eine breite Palette von Domänen.Es ist eine Reihe von Bibliotheken für die C ++ Programmiersprache, die Unterstützung für Aufgaben und Strukturen wie lineare Algebra, Pseudozufallszahlenerzeugung, Multithreading, Bildverarbeitung, reguläre Ausdrücke und Komponententests. Es enthält mehr als achtzig einzelne Bibliotheken. Die Boost Library hat eine breite Anwendung in der Computerfinanzierung

GSL - Die GNU Scientific Library (GSL) ist eine numerische Bibliothek für C- und C ++ - Programmierer. Es ist freie Software unter der GNU General Public License. Die Bibliothek bietet eine breite Palette von mathematischen Routinen wie Random Number Generator, Lineare Algebra, Differentialgleichungen, Monte-Carlo-Integration, Komplexe Zahlen, Eigenfunktionen, Polynom-Wurzeln, Vektoren und Matrizen, BLAS-Unterstützung und vieles mehr. GSL wurde unter GNU / Linux mit gcc entwickelt, unterstützt jedoch wichtige Plattformen einschließlich Microsoft Windows.

GLPK - (GNU Linear Programming Kit) -Paket ist für die Lösung von linearen Programmierung (LP), Mixed-Integer-Programmierung (MIP) und anderen verwandten Problemen gedacht. Es ist ein Satz von Routinen, die in ANSI C geschrieben und in Form einer aufrufbaren Bibliothek organisiert sind.

BLAS - Die BLAS (Basic Linear Algebra Subprograms) sind Routinen, die Standardbausteine ​​zur Durchführung grundlegender Vektor- und Matrixoperationen bereitstellen. Die BLAS der Ebene 1 führen Skalar-, Vektor- und Vektorvektoroperationen durch, die BLAS der Ebene 2 führen Matrixvektoroperationen durch, und die BLAS der Stufe 3 führen Matrixmatrixoperationen durch. Da die BLAS effizient, portabel und weit verbreitet sind, werden sie häufig bei der Entwicklung von hochqualitativer linearer Algebra-Software verwendet

LAPACK ++ - Linear Algebra PACKage (LAPACK) -Erweiterungen für hochleistungsfähige lineare Algebra-Berechnungen. Diese Version enthält Unterstützung für die Lösung linearer Systeme mit LU-, Cholesky- und QR-Matrix-Faktorisierungen.

Intel MKL - Intel Math Kernel Library (in C ++), eine Bibliothek optimierter mathematischer Routinen für Wissenschaft, Technik und Finanzanwendungen. Die Intel Math Kernel Library (Intel® MKL) beschleunigt die Mathematikverarbeitung und neuronale Netzwerkroutinen, die die Anwendungsleistung erhöhen und die Entwicklungszeit reduzieren. Es beinhaltet hoch vektorisierte und threaded lineare Algebra, schnelle Fourier-Transformationen (FFT), neuronales Netzwerk, Vector Math und Statistik Funktionen.

Blitz ++ - Blitz ++ ist eine C ++ Klassenbibliothek für wissenschaftliches Rechnen, die eine Leistung auf Augenhöhe mit Fortran 77/90 bietet. Es verwendet Template-Techniken, um eine hohe Leistung zu erzielen. Blitz ++ bietet dichte Arrays und Vektoren, Zufallszahlengeneratoren und kleine Vektoren (nützlich für die Darstellung von Mehrkomponenten- oder Vektorfeldern).

Dlib -Dlib ist ein modernes C ++ - Toolkit, das maschinelle Lernalgorithmen und Werkzeuge zur Erstellung komplexer Software in C ++ zur Lösung realer Probleme enthält. Es wird sowohl in der Industrie als auch in der Wissenschaft in einer Vielzahl von Bereichen wie Robotik, Embedded-Geräten, Mobiltelefonen und großen High-Performance-Computing-Umgebungen eingesetzt.

Shark - Shark ist eine schnelle, modulare, funktionsreiche Open Source C ++ Machine Learning Library. Es bietet Methoden für lineare und nichtlineare Optimierung, kernelbasierte Lernalgorithmen, neuronale Netze und verschiedene andere maschinelle Lerntechniken. Shark hängt von Boost und CMake ab. Es ist kompatibel mit Windows, Solaris, MacOS X und Linux

Mlpack ist eine C ++ Machine Learning Library mit Schwerpunkt auf Skalierbarkeit, Geschwindigkeit und Benutzerfreundlichkeit. MLPack bietet Funktionen wie Kollaboratives Filtern, Dichteschätzungsbäume, k-Means-Clustering, Hauptkomponentenanalyse, Gauß-Mischungsmodelle, Hidden-Markov-Modelle, Perzeptrons, lineare Regression und viele weitere maschinelle Lernalgorithmen.

ALGLIB - ist eine plattformübergreifende numerische Analyse- und Datenverarbeitungsbibliothek. Es unterstützt mehrere Programmiersprachen (C ++, C #, Pascal, VBA) und verschiedene Betriebssysteme (Windows, Linux, Solaris). ALGLIB-Funktionen umfassen:

Datenanalyse (Klassifikation / Regression, einschließlich neuronaler Netze)
Optimierung und nichtlineare Löser
Interpolation und lineare / nichtlineare Anpassung der kleinsten Quadrate
Lineare Algebra (direkte Algorithmen, EVD / SVD), direkte und iterative lineare Löser, Fast Fourier Transformation und viele andere Algorithmen (numerische Integration, ODEs, Statistik, spezielle Funktionen)

Alglib wird sowohl in kostenlosen als auch in kommerziellen Editionen angeboten.

TA-Lib - TA-Lib wird häufig von Handelssoftwareentwicklern verwendet, die technische Analysen von Finanzmarktdaten durchführen müssen. Enthält 200 Indikatoren wie ADX, MACD, RSI, Stochastik, Bollinger Bands usw. Candlestick-Mustererkennung. Es kommt als Open-Source-API für C / C ++, Java, Perl, Python und 100% Managed .NET und sogar Excel-Add-Ins sind verfügbar

Falls ich eine der populären quant-C ++ - Bibliotheken verpasse, kommentiere sie hier, um uns die Dinge besser kennenzulernen.