Почему хедж-фонды и финансовые сервисы часто используют OCaml?

StackOverflow https://stackoverflow.com/questions/1924367

Вопрос

Поговорив с несколькими quants / hedgies, я пришел к выводу, что большое количество из них, похоже, используют либо доморощенный язык, либо OCaml для многих задач.На что многие из них не могли ответить, так это почему.

Я, конечно, могу понять, почему они по большей части не хотели бы использовать C ++, но почему OCaml превосходит для этих целей по сравнению с другими языками сценариев, скажем, Python, Ruby и т.д.?

Это было полезно?

Решение

Попробуйте почитать Caml trading - опыт работы с функциональным программированием на Уолл-стрит автор: Ярон Мински и Стивен Уикс (прошу прощения, хотя эта статья раньше размещалась бесплатно на сайте Jane Capital, ее там больше нет, поэтому я оставляю ссылку на ACM для справки).Они подробно рассказывают о том, что, по их мнению, является преимуществами и недостатками OCaml, хотя по большей части они принимают как данность, что это лучше, чем большинство других вариантов, которые они рассматривали (т. е.не так много прямых сравнений с C ++, Python, что у вас есть).

Авторы работают в Jane Street Capital, которая вложила значительные средства в код OCaml.

Обновить:Смотрите также тему На каком языке программирования написано программное обеспечение для алгоритмической торговли?.Один из Комментарии упоминает презентацию Ярона Мински в CMU об использовании Caml компанией Jane Street Capital.Примерно на час, и очень интересно.

Обновление Второе:Ярон написал еще один обзор, на этот раз для ACM Queue, под названием OCaml для широких масс.

Другие советы

Смотрите, например, перестрелка с языками программирования для сравнения скорости:

Итак, мы все слышали фразу о лжи, наглой лжи и эталонах, так что рекомендуется использовать крупинки соли - но это довольно хорошо сделанное сравнение.В конце концов, важно, что человек делает со своей собственной проблемой и данными.

Первое, что следует иметь в виду, это то, что, хотя OCaml имеет REPL и четкий, лаконичный синтаксис, это не динамический язык, подобный Python или Ruby.Он имеет статическую типизацию и компилируется в машинный код.

Для количественного анализа более удобны скриптовые языки.У вас есть доступ ко множеству библиотек, легко создавать быстрые и грязные сценарии для управления информацией, а создание небольших и средних программ несложно даже для непрограммиста.

Для создания алгоритмов и систем, которые действительно задействованы в торговле, вам нужно что-то вроде OCaml.Основными преимуществами OCaml являются его функциональная природа, удобочитаемость (он читается почти так же хорошо, как динамический язык, такой как Python), надежность, но в основном скорость.OCaml намного, намного быстрее, чем думает большинство людей - это C fast (на самом деле немного медленнее, чем C, но во много, много раз быстрее, чем динамические языки).OCaml достаточно быстр для создания системы HFT, чего нельзя сказать ни о Python, ни о Ruby.

Кроме того, имейте в виду, что Джейн Стрит (самый громкий евангелист OCaml) приняла OCaml до того, как на сцену вышли Scala и Clojure.

Будучи функциональным языком, он имеет математическую природу, что, вероятно, хорошо вписывается в те проблемы, которые приходится решать этим фирмам.И, как отмечали другие, у него хороший профиль производительности.

Возможно, именно поэтому Microsoft выбрала OCaml для F#

Потому что это невероятно быстро (и гораздо более лаконично, чем C ++).

Подхватив сообщение Дона, Джейн Стрит Кэптиал даже имеет страница, посвященная OCaml, с дальнейшими ссылками на их взаимодействие с OCaml (включая Блог).Производительность OCaml обычно является серьезным аргументом, но я думаю, что и "квантам" это нравится, потому что функциональная парадигма очень хорошо подходит для их аналитической работы, поэтому я думаю, что они являются первыми приверженцами.И тогда фирмы обнаруживают, что это в равной степени подходит для системного программирования.

Тривиальное распараллеливание по сравнению с Python / Ruby?По крайней мере, это верно для F #, но должно быть верно и для Caml / OCaml почти по тем же причинам.

Как бы сильно я ни любил Ruby, это был бы не мой первый выбор для тяжелых задач, которые в основном являются математическими или агрегированными, и ни Python, ни Ruby пока не имеют действительно хорошей поддержки многопоточности.

Краткость относительно сложных конвейеров вычислений благодаря сопоставлению с образцом и предпочтение неизменяемости (сложнее реализовать в Ruby, немного проще в Python, но все же сложнее, чем в языках на основе ML) наиболее ценны для вычислений на больших наборах данных.

Я не работаю в подобном месте, так что это всего лишь предположения о том, почему я мог бы сделать это на их месте:

Как правило, это немного быстрее, чем такие языки, как Ruby и Python, и, как статически типизированный функциональный язык, обычно несколько проще анализировать код и знать, что он не содержит незначительных ошибок.(Да, модульные тесты также должны помочь выявить их, но неплохо иметь дополнительную уверенность в том, что ваши финансовые показатели не испорчены.) Кроме того, функциональное программирование очень тесно связано с математикой, в большей степени, чем большинство языковых парадигм высокого уровня (например, в математике нет ОО-ветви), поэтому оно хорошо моделирует то, что они там на самом деле делают.

По моему опыту работы с Quants, это VBA (читать:Excel) с c # или f # иногда тоже

Редактировать:

Я перефразирую это для голоса "против", я лично не знаю о Любой Кванты, использующие caml...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top