Почему хедж-фонды и финансовые службы часто используют OCaml? - PullRequest
23 голосов
/ 17 декабря 2009

Говоря с несколькими квантами / хеджи, я пришел к выводу, что многие из них, похоже, используют либо язык домашнего варенья, либо OCaml для многих задач. То, что многие из них не могли ответить, было, почему.

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

Ответы [ 9 ]

24 голосов
/ 18 декабря 2009

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

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

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

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

11 голосов
/ 17 декабря 2009

См., Например, стрельбу по языкам программирования для сравнения скоростей:

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

7 голосов
/ 11 декабря 2012

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

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

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

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

6 голосов
/ 17 декабря 2009

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

Может быть, поэтому Microsoft выбрала OCaml для F #

4 голосов
/ 17 декабря 2009

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

2 голосов
/ 05 января 2010

В ответ на сообщение Дона, Jane Street Captial даже имеет страницу , посвященную OCaml , с дополнительными ссылками на их участие в OCaml (включая блог ). Производительность OCaml, как правило, является большим аргументом, но я думаю, что «кванту» это нравится, потому что функциональная парадигма очень хорошо подходит для их аналитической работы, так что я думаю, что они - ранние последователи. И тогда фирмы обнаруживают, что он одинаково подходит для системного программирования.

1 голос
/ 17 декабря 2009

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

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

1 голос
/ 17 декабря 2009

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

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

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

0 голосов
/ 18 декабря 2009

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

Edit:

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

...