Frage

Im Gespräch mit einer Reihe von Quants / hedgies, kam ich zu dem Schluss, dass eine große Anzahl von ihnen scheint mit für viele Aufgaben entweder eine Homebrew-Sprache oder OCaml werden. Was viele von ihnen nicht antworten konnte war, warum.

Ich kann sicherlich verstehen, warum sie wollen, würden nicht C ++ zum größten Teil, aber warum ist OCaml überlegen für diese Verwendungen im Vergleich zu anderen Skriptsprachen, sagt Python, Ruby usw.?

War es hilfreich?

Lösung

Versuchen Sie lesen Caml Handel - Erfahrungen mit der funktionalen Programmierung an der Wall Street durch Yaron Minsky und Stephen Weeks (Entschuldigungen, während dieser Artikel verwendet, um kostenlos bei Jane Kapital gehostet wird, ist es nicht mehr da, so dass ich den ACM Link als Referenz verlassen). Sie gehen sehr ins Detail über das, was sie fühlen, sind die Vor- und Nachteile von OCaml, obwohl sie zum größten Teil nehmen es als gegeben, dass es besser ist, als die meisten anderen Optionen, die sie in Betracht gezogen (dh nicht viel direkter Vergleiche mit C ++, Python was haben Sie).

Die Autoren arbeiten an Jane Street Capital, die stark in OCaml Code investiert hat.

Update : Siehe auch der Faden Kommentare eine Erwähnungen Präsentation Yaron Minsky gab an der CMU auf Jane Street Capital die Nutzung von Caml. Etwa eine Stunde lang, und sehr interessant.

Update Zwei : Yaron hat einen weiteren Überblick, diesmal für ACM Queue geschrieben, genannt OCaml für die Massen .

Andere Tipps

Siehe zum Beispiel der Programmiersprachen Schießerei für Geschwindigkeitsvergleiche:

Nun, wir alle die Linie über Lügen gehört, verdammte Lügen und Benchmarks so Salzkörner zu empfehlen - aber dies eine ziemlich gut getan Vergleich. Am Ende des Tages zählt es, was man mit dem eigenen Problem und Daten gemacht wird.

Die erste, was im Auge zu behalten, ist, dass, obwohl OCaml eine REPL und klare, prägnante Syntax hat, ist es nicht eine dynamische Sprache wie Python oder Ruby. Es hat statische Typisierung und compiliert zu nativen Code.

Für die quantitative Analyse, Skriptsprachen sind bequemer. Sie haben Zugriff von Bibliotheken viel, es ist einfach, schnell und schmutzig Skripte zu tun Informationen zu verwalten und zu Trägerprogrammen kleine Gebäude ist einfach, auch für einen Nicht-Programmierer.

Für Algorithmen und Systeme zu schaffen, die tatsächlich in den Handel engagieren, wollen Sie so etwas wie OCaml. Die wichtigsten Vorteile der OCaml sind ihre funktionelle Natur, Lesbarkeit (es liest sich fast so schön wie eine dynamische Sprache wie Python), Zuverlässigkeit, aber meistens Geschwindigkeit. OCaml ist viel, viel schneller als die meisten Menschen glauben - es ist schnell C (tatsächlich etwas langsamer als C, aber viele, viele Male schneller als dynamische Sprache). OCaml ist schnell genug, um ein HFT-System zu schaffen, das nicht etwas ist, das entweder für Python oder Ruby gesagt werden kann.

Auch im Auge behalten, Jane Street (die schärfsten OCaml Evangelist) angenommen OCaml vor Scala und Clojure auf die Szene kam.

Als eine funktionale Sprache, ist es mathematisch in der Natur, die in schön mit den Arten von Problemen paßt wohl diese Firmen müssen lösen. Und wie andere darauf hingewiesen haben, ist es ein schönes Leistungsprofil hat.

Vielleicht ist der Grund, warum Microsoft OCaml für F #-co entschieden

Weil es unglaublich schnell (und weit prägnanter als C ++).

Anknüpfend an Don Post, Jane Straße Captial hat sogar eine Seite gewidmet OCaml , mit weiteren Links zu ihrem OCaml Engagement (einschließlich einem Blog ). Performance von OCaml ist in der Regel ein großes Argument, aber ich denke, auch die „Quants“ lieben es, weil das funktionale Paradigma selbst leiht sehr gut auf ihre Art der analytischen Arbeit, so dass ich denke, sie sind die Early Adopters. Und dann Unternehmen entdecken, dass es gleichermaßen für Systeme geeignet ist, programmiert wird.

Trivial Parallelisierung im Vergleich zu Python / Ruby-? Zumindest ist dies für F # true, sollte aber für Caml / OCaml für die gleichen Gründe wahr sein.

So viel wie ich Ruby-Liebe, es wäre nicht meine erste Wahl für schwere Aufgaben, die vor allem mathematischen oder Aggregationen und weder Python noch Rubin hat wirklich große Unterstützung noch für Multithreading.

Die Prägnanz von relativ komplexen Pipelines von Berechnungen durch Musterabgleich und die Präferenz für Unveränderlichkeit (härter in Ruby zu erzwingen, etwas leichter in Python, aber immer noch härter als in ML-basierten Sprachen) sind am wertvollsten für die Berechnungen auf große Datenmengen .

ich nicht Arbeit an einem Ort so, so dass diese nur Vermutungen, sind, warum ich es in ihrer Lage tun könnte:

Es ist im Allgemeinen ein bisschen schneller als Sprachen wie Ruby und Python und als eine statisch typisierte funktionale Sprache, es in der Regel etwas leichter zu Grunde über den Code und weiß, dass es nicht subtile Bugs enthält. (Ja, Unit-Tests sollen helfen, diese ebenfalls zu fangen, aber zusätzliche Sicherheit, dass Ihre finanziellen Zahlen sind nicht verschraubt zu werden, ist schön zu haben.) Außerdem ist die funktionale Programmierung sehr eng mit Mathe, um so mehr, als die meist High-Level-Sprache Paradigmen (wie es keine OO Zweig der Mathematik ist), so gut ist es bei der Modellierung, was sie dort eigentlich tun.

Nach meiner Erfahrung von Quants es VBA (sprich: Excel) mit c # oder f # manchmal zu

Edit:

Ich werde das anders formulieren, für die nach unten Abstimmung, weiß ich nicht persönlich von jeder Quants mit caml ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top