Библиотека Top Quant C ++ для количественных финансов

Why we make bad decisions | Dan Gilbert (April 2019).

Anonim

Начиная с алгоритмической торговли и заканчивая проблемами финансовой инженерии, библиотеки C ++ играют ключевую роль в вычислительно-интенсивных частях, которые по существу требуют высококвалифицированного опыта в области финансов, математики и статистики. Одним из преимущественных преимуществ библиотек C ++ является то, что они чрезвычайно быстрые и надежные и наиболее широко используются в высокопроизводительных вычислительных приложениях. Большинство фирм с высокой частотой торговли и даже профессиональные (не-HFT) алгоритмические торговые фирмы используют C ++ / C для повторного тестирования и создания стратегии.

Давайте рассмотрим некоторые из самых популярных библиотек Quant C ++.

QuantLib - это библиотека C ++ для финансовых количественных аналитиков и разработчиков. Проект QuantLib с открытым исходным кодом был запущен в 2000 году в итальянской бутик-компании RiskMap RiskMap (теперь называемой StatPro Italia). Первый пакет QuantLib был выпущен в декабре 2000 года под лицензией BSD. Это позволило банкам и компаниям-разработчикам программного обеспечения расширять и изменять код без необходимости его выпуска. В рамках проекта сегодня более 150 участников, причем некоторые из них вносят существенный вклад. QuantLib требует наличия библиотек Boost C ++ в качестве предварительного условия и должен быть отдельно установлен как для Ubuntu, так и для Windows

К большому количеству модулей поддерживаются Quantlib. Некоторые из основных модулей - это числовые типы, макросы Quantlib, утилиты, валютные курсы и курсы валют, шаблоны проектирования, вычисления даты и времени, математические инструменты (генераторы псевдослучайных чисел, алгоритмы поиска корней и методы оптимизации), структура конечных разностей, решетка Методы, Монте-Карло-каркас, Денежные потоки, Структуры сроков, Индексы, котировки, Ценовые двигатели, Финансовые инструменты, Модели акций, Модели рынка, Краткосрочная модельная модель, Модели волатильности, Стохастические процессы.

Quantlib также поставляется в виде Quantlib Excel Addin и экспортирует функциональность библиотеки аналитики QuantLib C ++ в Microsoft Excel. QuantLib доступен в виде модуля C #, Guile, Java, MzScheme, Perl, Python и Ruby с помощью SWIG. Также доступны экспериментальные привязки к GNU R и Objective Caml.

Armadillo - Armadillo - библиотека линейных алгебр высокого качества (математическая математика) для языка C ++, направленная на достижение хорошего баланса между скоростью и простотой использования. Его синтаксис очень похож на Matlab / Octave. Он может использоваться для прямого применения в машинах, распознавании образов, компьютерном видении, обработке сигналов, биоинформатике, статистике, финансах и т. Д. Он обеспечивает различные разложения матриц и эффективные классы для векторов, матриц, кубов, целых чисел, чисел с плавающей точкой и комплексных чисел операции.

Armadillo будет работать с компиляторами, поддерживающими более старые стандарты C ++ 98 и C ++ 03, а также новые стандарты C ++ 11 и C ++ 14. Armadillo также предоставляет привязки / интерфейс к python (armanpy) и R (расширение RcppArmadillo).

Eigen - Eigen - библиотека шаблонов C ++ для линейной алгебры: матрицы, векторы, численные решатели и связанные с ними алгоритмы. Он также считается альтернативой библиотеке Армадилло. Eigen поддерживает все размеры матрицы, от небольших матриц фиксированного размера до сколь угодно больших плотных матриц и даже разреженных матриц. Он поддерживает различные матричные разложения, геометрические функции, стандартные числовые типы, включая сложные, целые числа и легко расширяется для пользовательских числовых типов. Eigen не имеет никаких зависимостей, кроме стандартной библиотеки C ++. Eigen является стандартным C ++ 98 и поэтому теоретически должен быть совместим с любым совместимым компилятором.

Boost - это большая коллекция рецензируемого кода, охватывающего широкий диапазон доменов. Это набор библиотек для языка программирования C ++, который обеспечивает поддержку задач и структур, таких как линейная алгебра, генерация псевдослучайных чисел, многопоточность, обработка изображений, регулярные выражения и модульное тестирование. Он содержит более восьмидесяти отдельных библиотек. Библиотека Boost имеет обширные приложения в области вычислительного финансирования

GSL - Научная библиотека GNU (GSL) - это числовая библиотека для программистов на C и C ++. Это бесплатное программное обеспечение в соответствии с GNU General Public License. Библиотека предоставляет широкий спектр математических подпрограмм, таких как генератор случайных чисел, линейная алгебра, дифференциальные уравнения, интеграция Монте-Карло, комплексные числа, собственные функции, корни многочленов, векторы и матрицы, поддержка BLAS и многое другое. GSL разработан на GNU / Linux с gcc, однако он поддерживает основные платформы, включая окна Microsoft.

Комплект GLPK - (GNU Linear Programming Kit) предназначен для решения крупномасштабного линейного программирования (LP), смешанного целочисленного программирования (MIP) и других связанных с ним проблем. Это набор подпрограмм, написанных в ANSI C и организованных в виде вызываемой библиотеки.

BLAS - BLAS (базовые подпрограммы линейной алгебры) - это подпрограммы, которые предоставляют стандартные строительные блоки для выполнения основных векторных и матричных операций. BLAS уровня 1 выполняет скалярные, векторные и векторно-векторные операции, BLAS уровня 2 выполняет операции с матричным вектором, а BLAS уровня 3 выполняет операции матричной матрицы. Поскольку BLAS являются эффективными, переносимыми и широко доступными, они обычно используются в разработке программного обеспечения линейной алгебры высокого качества

LAPACK ++ - Расширения линейной алгебры PACKAGE (LAPACK) для высокопроизводительных вычислений линейной алгебры. Эта версия включает в себя поддержку для решения линейных систем с использованием LU-процессов, Cholesky и QR-матриц.

Intel MKL - Библиотека математического ядра Intel (на C ++), библиотека оптимизированных математических подпрограмм для научных, технических и финансовых приложений. Библиотека Intel Math Kernel (Intel® MKL) ускоряет обработку математических и нейронных сетей, что повышает производительность приложений и сокращает время разработки. Он включает в себя сильно векторизованные и потоковые функции линейной алгебры, быстрого преобразования Фурье (FFT), нейронной сети, векторной математики и статистики.

Blitz ++ - Blitz ++ - это библиотека классов C ++ для научных вычислений, которая обеспечивает производительность наравне с Fortran 77/90. Он использует шаблонные методы для достижения высокой производительности. Blitz ++ обеспечивает плотные массивы и векторы, генераторы случайных чисел и небольшие векторы (полезно для представления многокомпонентных или векторных полей).

Dlib -Dlib - это современный инструментарий C ++, содержащий алгоритмы машинного обучения и инструменты для создания сложного программного обеспечения на C ++ для решения реальных проблем. Он используется как в промышленности, так и в академических кругах в широком диапазоне областей, включая робототехнику, встроенные устройства, мобильные телефоны и большие высокопроизводительные вычислительные среды.

Shark - Shark - это быстрая, модульная, многофункциональная библиотека обучения машинам C ++ с открытым исходным кодом. Он предоставляет методы линейной и нелинейной оптимизации, алгоритмы обучения на основе ядра, нейронные сети и различные другие методы машинного обучения. Акула зависит от Boost и CMake. Он совместим с Windows, Solaris, MacOS X и Linux

Mlpack - это библиотека обучения машинам C ++ с акцентом на масштабируемость, скорость и простоту использования. MLPack предоставляет такие функции, как совместная фильтрация, деревья оценки плотности, кластеризация k-сред, анализ основных компонентов, модели моделей Гаусса, скрытые марковские модели, перцептроны, линейная регрессия и многие другие алгоритмы машинного обучения.

ALGLIB - это кросс-платформенный численный анализ и библиотека обработки данных. Он поддерживает несколько языков программирования (C ++, C #, Pascal, VBA) и несколько операционных систем (Windows, Linux, Solaris). Функции ALGLIB включают:

Анализ данных (классификация / регрессия, включая нейронные сети)
Оптимизация и нелинейные решатели
Интерполяция и линейный / нелинейный метод наименьших квадратов
Линейная алгебра (прямые алгоритмы, EVD / SVD), прямые и итеративные линейные решатели, быстрое преобразование Фурье и многие другие алгоритмы (численное интегрирование, ОДУ, статистика, специальные функции)

Alglib входит как в бесплатные, так и в коммерческие издания.

TA-Lib - TA-Lib широко используется разработчиками программного обеспечения, требующими проведения технического анализа данных финансового рынка. Включает 200 индикаторов, таких как ADX, MACD, RSI, Stochastic, полосы Боллинджера и т. Д. Подсвечник. Он поставляется с API-интерфейсом Open-source для C / C ++, Java, Perl, Python и 100% управляемых .NET и даже надстроек Excel.

В случае, если я пропустил какую-либо популярную библиотеку c ++ c ++, прокомментируйте здесь, чтобы сообщить нам все лучше.