Question

Pour parler à un certain nombre de quants / hedgies, je suis venu à la conclusion qu'un grand nombre d'entre eux semblent être en utilisant soit une langue homebrew ou OCaml pour de nombreuses tâches. Ce que beaucoup d'entre eux ne pouvaient pas répondre est pourquoi.

Je peux certainement comprendre pourquoi ils veulent utiliser wouldnt C ++ pour la plupart, mais pourquoi est-OCaml supérieure pour ces utilisations par rapport à d'autres langages de script, par exemple Python, Ruby, etc?

Était-ce utile?

La solution

Essayez de lire trading Caml - expériences avec la programmation fonctionnelle sur Wall Street par Yaron Minsky et Stephen Weeks (des excuses, alors que cet article utilisé pour être hébergé gratuitement à Jane Capital, il est plus là, donc je laisse le lien ACM pour référence). Ils vont dans les détails sur ce qu'ils ressentent sont les avantages et les inconvénients de OCaml, mais ils pour la plupart prennent comme étant donné qu'il est mieux que la plupart des autres options qu'ils considéraient comme (c.-à-pas beaucoup de comparaisons directes avec C ++, Python , ce que vous avez).

Les auteurs travaillent à Jane Street Capital qui a beaucoup investi dans le code OCaml.

Mise à jour : Voir aussi le fil fait mention d'un présentation Yaron Minsky a donné à la CMU sur l'utilisation de Caml Jane Street Capital. Environ une heure, et très intéressant.

Mise à jour Deux : Yaron a écrit un autre aperçu, cette fois pour ACM Queue, appelée OCaml pour les masses .

Autres conseils

Voir par exemple les langages de programmation shootout pour les comparaisons de vitesse:

Maintenant, nous avons tous entendu la ligne au sujet des mensonges, des mensonges et des damnés repères si les grains de sel recommandé - mais une comparaison assez bien fait. A la fin de la journée, il importe ce que l'on se fait avec son propre problème et les données.

La première chose à garder à l'esprit, est que même si OCaml a une REPL et une syntaxe claire et succincte, ce n'est pas un langage dynamique comme Python ou Ruby. Il a typage statique et compile en code natif.

Pour l'analyse quantitative, les langages de script sont plus pratiques. Vous avez accès à beaucoup de bibliothèques, il est facile de faire des scripts rapides et sales pour gérer l'information, et la construction de petites et moyennes programmes est facile, même pour un non-programmeur.

, vous voulez pour créer des algorithmes et des systèmes qui engagent effectivement dans le commerce quelque chose comme OCaml. Les principaux avantages de OCaml sont sa nature fonctionnelle, la lisibilité (il lit presque aussi bien comme un langage dynamique comme Python), la fiabilité, mais surtout la vitesse. OCaml est beaucoup, beaucoup plus rapide que la plupart des gens pensent - il est rapide C (en fait légèrement plus lent que C, mais beaucoup, beaucoup de fois plus vite que les langages dynamiques). OCaml est assez rapide pour créer un système HFT, ce qui est quelque chose qui peut dire soit pour Python ou Ruby.

De plus, gardez à l'esprit Jane Street (le plus vocal évangéliste OCaml) a adopté OCaml avant Scala et Clojure est venu sur la scène.

Être un langage fonctionnel, il est de nature mathématique, ce qui correspond probablement bien avec le genre de problèmes que ces entreprises ont besoin de résoudre. Et comme d'autres l'ont souligné, il a un beau profil de performance.

Peut-être est la raison pour laquelle Microsoft cooptées OCaml pour F #

Parce qu'il est extrêmement rapide (et beaucoup plus succincte que C ++).

Reprenant le poste de Don, rue Jane Captial a même un OCaml , avec d'autres liens à leur engagement OCaml (y compris un blog ). Performance de OCaml est généralement un grand argument, mais je pense aussi les « quants » aiment parce que le paradigme fonctionnel se prête très bien à leur genre de travail analytique, donc je pense qu'ils sont les premiers à adopter. Et puis les entreprises découvrent qu'il est également adapté pour la programmation des systèmes.

Trivial

parallélisation par rapport à Python / Ruby? cela est vrai au moins pour F #, mais devrait être vrai pour Caml / OCaml pour les mêmes raisons.

Autant que j'aime Ruby, ce ne serait pas mon premier choix pour les tâches lourdes qui sont la plupart du temps mathématique ou agrégations, ni Python, ni Ruby ont un soutien vraiment super pour le multithreading encore.

Le laconisme des pipelines relativement complexes de calculs grâce à la correspondance de motif et la préférence pour immuabilité (plus difficile à appliquer en Ruby, un peu plus facile en Python, mais encore plus difficile que dans les langues à base ML) sont le plus précieux pour les calculs sur de grands ensembles de données .

Je ne travaille pas à un endroit comme ça, donc ce sont des suppositions aussi pourquoi je pourrais le faire dans leur position:

Il est en général assez un peu plus vite que les langues comme Ruby et Python et, comme un langage fonctionnel typé statiquement, il est généralement un peu plus facile de raisonner sur le code et savoir qu'il ne contient pas d'erreurs subtiles. (Oui, les tests unitaires devraient aider à attraper ceux aussi bien, mais une assurance supplémentaire que vos résultats financiers ne sont pas se foiré est agréable d'avoir). De plus, la programmation fonctionnelle est très étroitement liée aux mathématiques, plus que la plupart langage de haut niveau paradigmes (comme, il n'y a pas une branche OO de mathématiques), il est donc bon de modéliser ce qu'ils font là.

Dans mon expérience de quants il est VBA (lire: Excel) avec c #, ou f # parfois trop

Edit:

Je vais reformuler ma question, pour le vote vers le bas, je ne connais pas personnellement de any quants en utilisant Caml ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top