Подтвердить что ты не робот

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

Говоря о целом ряде quants/hdgies, я пришел к выводу, что многие из них, по-видимому, используют либо домашний язык, либо OCaml для многих задач. Многие из них не могли ответить, почему.

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

4b9b3361

Ответ 1

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

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

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

Update Two: Ярон написал еще один обзор, на этот раз для очереди ACM, называемый OCaml для масс.

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

Я не работаю в таком месте, так что это просто догадки о том, почему я могу сделать это в своей позиции:

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

Ответ 9

В моем опыте Quants это VBA (read: Excel) с С#, или f # иногда тоже

Edit:

Я буду перефразировать, что для понижающего голоса я лично не знаю никаких Quants, использующих caml...