Говоря со многими шестами для отталкивания / hedgies, я пришел к выводу, что большое количество их, кажется, использует или доморощенный язык или OCaml для многих задач. То, на что не могли ответить многие из них, было то, почему.
Я могу, конечно, понять, почему они не хотели бы использовать C++ по большей части, но почему OCaml выше к этому использованию по сравнению с другими языками сценариев, скажем Python, Ruby и т.д.?
Попробуйте прочитать Caml trading - опыт функционального программирования на Уолл-стрит Ярона Мински и Стивена Уикса (извиняюсь, раньше эта статья размещалась бесплатно в Jane Capital, его больше нет, поэтому я оставляю ссылку ACM для справки). Они очень подробно рассказывают о преимуществах и недостатках OCaml, хотя по большей части принимают как данность, что он лучше, чем большинство других рассмотренных ими вариантов (т.е. не так много прямых сравнений с C ++, Python. , что у вас есть).
Авторы работают в Jane Street Capital, которая вложила значительные средства в код OCaml.
Обновление : См. также ветку На каком языке (языках) написано программное обеспечение для алгоритмической торговли в? . В одном из комментариев упоминается презентация Ярона Мински, сделанная в CMU по поводу использования Jane Street Capital Caml. Примерно час, и очень интересный.
Обновление 2 : Ярон написал еще один обзор, на этот раз для очереди ACM, под названием OCaml для масс .
]См., Например, обзор языков программирования для сравнения скорости:
Теперь мы все слышали строки о лжи, проклятой лжи и тестах, поэтому рекомендуется скептически - но это довольно хорошее сравнение. В конце концов, важно, что делать со своими проблемами и данными.
Потому что он невероятно быстрый (и гораздо более лаконичный, чем C ++).
По моему опыту работы с Quants, это VBA (читай: Excel) с C # или f #, иногда тоже
Редактировать:
Я перефразирую это, чтобы проголосовать против, я не Я лично не знаю каких-либо квантов, использующих caml ...
Являясь функциональным языком, он имеет математическую природу, что, вероятно, хорошо вписывается в те виды проблем, которые необходимо решать этим фирмам. И как отмечают другие, он имеет хороший профиль производительности.
Может быть, именно поэтому Microsoft кооптировал OCaml для F#
.Тривиальное распараллеливание по сравнению с Python/Ruby? По крайней мере, это верно для F#, но должно быть верно и для Caml/OCaml по тем же причинам.
- Как бы сильно я ни любил Ruby, это не был бы мой первый выбор для сверхмощных задач, которые в основном математические или агрегированные, и ни Python, ни Ruby пока не имеют действительно большой поддержки для многопоточности.
Сложность относительно сложных трубопроводов вычислений благодаря подбору шаблонов и предпочтению непреложности (труднее реализовать на Ruby, немного легче на Python, но все же труднее, чем на языках, основанных на ML), наиболее ценна для вычислений на больших массивах данных.
.Я не работаю в таком месте, так что это просто догадки, почему я могу сделать это в их положении:
Обычно это немного быстрее, чем такие языки, как Ruby и Python, и, как статически типизированный функциональный язык, в общем, немного проще рассуждать о коде и знать, что он не содержит тонких ошибок. (Да, юнит-тесты тоже должны помочь поймать их, но дополнительную уверенность в том, что ваши финансовые показатели не испортятся, приятно иметь). Кроме того, функциональное программирование очень тесно связано с математикой, в большей степени, чем большинство парадигм языка высокого уровня (например, нет ответвления OO по математике), так что оно хорошо моделирует то, что они на самом деле там делают
.Зарегистрировавшись на посту Дона, Джейн Стрит Кэпэйшн даже имеет страницу , посвященную OCaml, с дальнейшими ссылками на их участие в OCaml (включая блог). Производительность OCaml обычно является большим аргументом, но я думаю, что и "квантам" это нравится, потому что функциональная парадигма очень хорошо подходит для их аналитической работы, так что я думаю, что они являются ранними приверженцами. И тогда фирмы обнаруживают, что он одинаково хорошо подходит для системного программирования
.