Edukacja

Top Quant C ++ library for Quantitative Finance

Advanced C++ in Quant Finance by Nick Webber - Introduction (Może 2019).

Anonim

Począwszy od handlu algorytmicznego do problemów inżynierii finansowej, biblioteki C ++ odgrywają kluczową rolę w częściach wymagających dużej mocy obliczeniowej, które zasadniczo wymagają wysoko wykwalifikowanej wiedzy z zakresu finansów, matematyki i statystyki. Jedną z głównych zalet bibliotek C ++ są one niezwykle szybkie i niezawodne oraz najczęściej używane w aplikacjach obliczeniowych o wysokiej wydajności. Większość firm handlujących wysokimi częstotliwościami, a nawet profesjonalne (nie-HFT), algorytmiczne firmy handlowe stosują C ++ / C do testowania i tworzenia strategii.

Pozwala zaglądać do najpopularniejszych bibliotek Quant C ++.

QuantLib - jest biblioteką C ++ dla finansowych analityków ilościowych i programistów. Projekt open source QuantLib rozpoczął się w 2000 roku we włoskiej firmie RiskMap zarządzającej ryzykiem (obecnie o nazwie StatPro Italia). Pierwszy pakiet QuantLib został wydany w grudniu 2000 r. Na mocy liberalnej licencji BSD. Umożliwiło to bankom i firmom oprogramowania rozszerzenie i modyfikację kodu bez konieczności jego zwalniania. Projekt ma dziś ponad 150 autorów, a niektórzy z nich wnoszą znaczący wkład. QuantLib wymaga bibliotek Boost C ++ jako warunku wstępnego i wymaga osobnej instalacji zarówno dla systemu Ubuntu, jak i Windows

Rozmaite moduły są obsługiwane przez Quantlib. Niektóre z głównych modułów to: Typy liczbowe, Makra Quantlib, narzędzia, Waluty i kursy wymiany walut, Wzorce projektowe, Obliczanie daty i czasu, Narzędzia matematyczne (Generatory liczb pseudolosowych, algorytmy odnajdywania rootów i metody optymalizacji), Rastrowe różnice struktur, Krata Metody, struktura Monte-Carlo, przepływy pieniężne, struktury terminowe, indeksy, notowania, silniki cenowe, instrumenty finansowe, modele kapitałowe, modele rynkowe, ramy modelowania o niskiej szybkości, modele zmienności, procesy stochastyczne.

Quantlib jest również dostępny jako dodatek Quantlib Excel i eksportuje funkcjonalność biblioteki analitycznej QuantLib C ++ do Microsoft Excel. QuantLib jest dostępny jako moduł C #, Guile, Java, MzScheme, Perl, Python i Ruby za pomocą SWIG. Dostępne są również eksperymentalne wiązania z GNU R i Objective Caml.

Armadillo - Armadillo to wysokiej jakości biblioteka liniowych algebry (matematyki macierzowej) dla języka C ++, mająca na celu osiągnięcie równowagi pomiędzy szybkością i łatwością użycia. Jego składnia jest podobna do Matlab / Octave. Może być stosowany do bezpośrednich zastosowań w uczeniu maszynowym, rozpoznawaniu wzorów, wizji komputerowej, przetwarzaniu sygnałów, bioinformatyce, statystykach, finansach itp. Zapewnia różne dekompozycje macierzy i efektywne klasy wektorów, macierzy, kostek, liczb całkowitych, liczb zmiennoprzecinkowych i liczb zespolonych operacje.

Armadillo będzie działał z kompilatorami obsługującymi starsze standardy C ++ 98 i C ++ 03, a także nowszymi standardami C ++ 11 i C ++ 14. Armadillo zapewnia również powiązania / interfejs z python (armanpy) i R (rozszerzenie RcppArmadillo).

Eigen - Eigen jest biblioteką szablonów C ++ dla algebry liniowej: macierzami, wektorami, rozwiązaniami numerycznymi i powiązanymi algorytmami. Jest również uważany za alternatywę dla biblioteki Armadillo. Eigen obsługuje wszystkie rozmiary macierzy, od małych macierzy o stałej wielkości do arbitralnie dużych gęstych matryc, a nawet rzadkie macierze. Obsługuje różne dekompozycje macierzy, funkcje geometrii, standardowe typy liczbowe, w tym złożone, całkowite i można je łatwo rozszerzyć do niestandardowych typów liczbowych. Eigen nie ma żadnych zależności innych niż biblioteka standardowa C ++. Eigen jest standardem C ++ 98 i dlatego teoretycznie powinien być kompatybilny z każdym zgodnym kompilatorem.

Boost - to duży zbiór recenzowanego kodu obejmującego szeroki zakres domen. Jest to zestaw bibliotek dla języka programowania C ++, który zapewnia obsługę zadań i struktur, takich jak algebra liniowa, generowanie liczby pseudolosowej, wielowątkowość, przetwarzanie obrazu, wyrażeń regularnych i testów jednostkowych. Zawiera ponad osiemdziesiąt pojedynczych bibliotek. Biblioteka Boost ma szerokie zastosowanie w finansach komputerowych

GSL - Biblioteka Naukowa GNU (GSL) jest biblioteką numeryczną dla programistów C i C ++. Jest to wolne oprogramowanie na licencji GNU General Public Licence. Biblioteka oferuje szeroki zakres procedur matematycznych, takich jak Generator liczb losowych, Algebra liniowa, Równania różniczkowe, Integracja Monte-Carlo, Liczby zespolone, Funkcje własne, Korzenie wielomianów, Wektory i Matryce, Obsługa BLAS i wiele innych. GSL jest rozwijany na GNU / Linux z gcc, jednak obsługuje główne platformy, w tym Microsoft Windows.

Pakiet GLPK - (GNU Linear Programming Kit) jest przeznaczony do rozwiązywania programowania liniowego na dużą skalę (LP), programowania mieszanych liczb całkowitych (MIP) i innych powiązanych problemów. Jest to zestaw procedur napisanych w ANSI C i zorganizowanych w formie biblioteki do wywoływania.

BLAS - Podprogramy BLAS (Basic Linear Algebra) to procedury zapewniające standardowe elementy konstrukcyjne do wykonywania podstawowych operacji wektorowych i macierzowych. BLAS poziomu 1 wykonuje operacje skalarne, wektorowe i wektor-wektorowe, BLAS 2 poziomu wykonuje operacje macierzy-wektora, a BLAS poziomu 3 wykonuje operacje macierzy macierzy. Ponieważ BLAS są wydajne, przenośne i powszechnie dostępne, są powszechnie stosowane w opracowywaniu oprogramowania wysokiej jakości algebry liniowej

LAPACK ++ - Rozszerzenia Algebra Linear (LAPACK) dla wysoko wydajnych obliczeń algebry liniowej. Ta wersja zawiera obsługę rozwiązywania układów liniowych z wykorzystaniem macierzy LU, Cholesky i QR matrix.

Intel MKL - biblioteka Intel Math Kernel (w C ++), biblioteka zoptymalizowanych procedur matematycznych do zastosowań w nauce, inżynierii i finansach. Biblioteka Intel Math Kernel Library (Intel® MKL) przyspiesza przetwarzanie matematycznych i sieci neuronowych, które zwiększają wydajność aplikacji i skracają czas programowania. Zawiera wysoce wektoryzowaną i gwintowaną algebrę liniową, szybkie transformaty Fouriera (FFT), sieć neuronową, funkcje wektorowe matematyczne i statystyki.

Blitz ++ - Blitz ++ jest biblioteką klasy C ++ do obliczeń naukowych, która zapewnia wydajność na równi z Fortranem 77/90. Wykorzystuje techniki szablonów w celu osiągnięcia wysokiej wydajności. Blitz ++ dostarcza gęste tablice i wektory, generatory liczb losowych i małe wektory (przydatne do reprezentowania pól wieloskładnikowych lub wektorowych).

Dlib -Dlib to nowoczesny zestaw narzędzi C ++ zawierający algorytmy uczenia maszynowego i narzędzia do tworzenia złożonego oprogramowania w języku C ++ w celu rozwiązywania problemów w świecie rzeczywistym. Jest wykorzystywany zarówno w przemyśle, jak i środowisku akademickim w wielu dziedzinach, w tym w robotyce, urządzeniach wbudowanych, telefonach komórkowych i dużych środowiskach obliczeniowych o wysokiej wydajności.

Shark - Shark jest szybką, modułową, bogatą w funkcje biblioteką uczenia maszynowego z otwartym dostępem do kodu C ++. Zapewnia metody optymalizacji liniowej i nieliniowej, algorytmy uczenia się oparte na jądrze, sieci neuronowe i różne inne techniki uczenia maszynowego. Shark zależy od Boost i CMake. Jest kompatybilny z Windows, Solaris, MacOS X i Linux

Mlpack to biblioteka uczenia maszynowego C ++, z naciskiem na skalowalność, szybkość i łatwość użycia. MLPack zapewnia funkcjonalności, takie jak filtrowanie grupowe, drzewka oszacowania gęstości, grupowanie k-średnich, analizę głównych składowych, modele miksów Gaussa, ukryte modele Markowa, Perceptrony, regresję liniową i wiele innych algorytmów uczenia maszynowego.

ALGLIB - to wieloplatformowa biblioteka analizy i przetwarzania danych. Obsługuje kilka języków programowania (C ++, C #, Pascal, VBA) i kilka systemów operacyjnych (Windows, Linux, Solaris). Funkcje ALGLIB obejmują:

Analiza danych (klasyfikacja / regresja, w tym sieci neuronowe)
Optymalizacja i rozwiązywanie nieliniowe
Interpolacja i liniowe / nieliniowe dopasowanie najmniejszych kwadratów
Algebra liniowa (algorytmy bezpośrednie, EVD / SVD), bezpośrednie i iteracyjne rozwiązania liniowe, szybka transformata Fouriera i wiele innych algorytmów (integracja numeryczna, różnice ODE, statystyki, funkcje specjalne)

Alglib jest dostępny zarówno w wersji bezpłatnej, jak i komercyjnej.

TA-Lib - TA-Lib jest szeroko wykorzystywany przez deweloperów handlowych, którzy potrzebują analizy technicznej danych rynkowych. Zawiera 200 wskaźników takich jak ADX, MACD, RSI, Stochastic, Bollinger Bands itp. Rozpoznawanie wzorów świecowych. Jest dostępny jako Open-source API dla C / C ++, Java, Perl, Python i 100% zarządzanych .NET, a nawet dodatki Excel są dostępne

W przypadku, gdy przegapiłem którąś z popularnych bibliotek c ++, skomentuj tutaj, aby dać nam znać o wiele lepiej.