Domanda

Parlando ad un certo numero di quants / hedgies, sono giunto alla conclusione che un gran numero di loro sembrano essere utilizzando un linguaggio homebrew o OCaml per molte attività. Quello che molti di loro non poteva rispondere era il motivo.

posso certamente capire perché andrei vogliono utilizzare C ++ per la maggior parte, ma perché è OCaml superiore per questi usi rispetto ad altri linguaggi di scripting, ad esempio Python, Ruby ecc?

È stato utile?

Soluzione

Caml negoziazione - esperienze con la programmazione funzionale a Wall Street da Yaron Minsky e Weeks Stephen (scuse, mentre questo articolo utilizzato per essere ospitati gratuitamente presso Jane Capitale, non è più lì, così lascio il link ACM per riferimento). Vanno in grande dettaglio su ciò che sentono sono i vantaggi e gli svantaggi di OCaml, anche se per la maggior parte lo prendo come un dato che è meglio della maggior parte delle altre opzioni che consideravano (cioè non un sacco di confronti diretti con C ++, Python , quello che hai).

Gli autori lavorano a Jane Via Capitale che ha investito pesantemente nel codice OCaml.

Aggiorna : Vedere anche il filo Quale linguaggio di programmazione (s) è un software trading algoritmico scritto in? . Uno dei menziona un presentazione Yaron Minsky ha dato a CMU sull'uso di Jane Via Capitale della Caml. A proposito di lungo un'ora, e molto interessante.

Aggiorna Due : Yaron ha scritto un altro quadro, questa volta per ACM Queue, chiamato OCaml per le masse .

Altri suggerimenti

Si vedano ad esempio i linguaggi di programmazione shootout per il confronto di velocità:

Ora, abbiamo tutti sentito la linea di bugie, le maledette bugie e parametri di riferimento in modo da grani di sale raccomandato - ma questo un confronto abbastanza ben fatto. Alla fine della giornata è importante ciò che si viene fatto con il proprio problema e dati.

La prima cosa da tenere a mente, è che anche se OCaml ha un REPL e, sintassi concisa chiaro, non è un linguaggio dinamico come Python o Ruby. Ha tipizzazione statica e compilato in codice nativo.

per l'analisi quantitativa, linguaggi di scripting sono più convenienti. Si ha accesso a un sacco di librerie, è facile fare gli script rapido e sporco per gestire le informazioni, e la costruzione di piccole e medie programmi è facile, anche per un non-programmatore.

Per la creazione di algoritmi e sistemi che in realtà si impegnano nel commercio, si desidera qualcosa di simile OCaml. I principali vantaggi di OCaml sono la sua natura funzionale, la leggibilità (si legge quasi come bene come un linguaggio dinamico come Python), l'affidabilità, ma soprattutto la velocità. OCaml è molto, molto più velocemente di quanto la maggior parte delle persone credono - è C veloce (in realtà leggermente più lento di C, ma molte, molte volte più veloce di linguaggi dinamici). OCaml è abbastanza veloce per creare un sistema HFT, che non è qualcosa che si può dire sia per Python o Ruby.

Inoltre, tenete a mente Jane Street (la più vocale OCaml evangelista) ha adottato OCaml prima di Scala e Clojure è venuto sulla scena.

Essendo un linguaggio funzionale, è di natura matematica, che probabilmente si adatta perfettamente con il tipo di problemi queste imprese hanno bisogno di risolvere. E, come altri hanno fatto notare, ha un bel profilo delle prestazioni.

Forse questo è il motivo per cui Microsoft ha cooptato OCaml per F #

Perché è incredibilmente veloce (e di gran lunga più succinto di C ++).

Raccogliendo sul post di Don, Jane Via Captial ha anche un dedicata al OCaml , con ulteriori collegamenti alle loro impegno OCaml (tra cui un blog ). Prestazioni di OCaml è di solito un grande argomento, ma credo che anche i "quants" amano perché il paradigma funzionale si presta molto bene per il loro tipo di lavoro analitico, quindi penso che sono i primi ad adottare. E poi le imprese scoprono che è ideale per la programmazione dei sistemi.

parallelizzazione Trivial rispetto a Python / Ruby? Almeno questo è vero per F #, ma dovrebbe essere vero per Caml / OCaml per le stesse ragioni.

Per quanto io amo Ruby, non sarebbe la mia prima scelta per le attività pesanti, che sono per lo più matematici o aggregazioni, e né Python, né di Ruby avere davvero un grande supporto per il multithreading ancora.

L'essenzialità delle condotte relativamente complessi di calcolo grazie al pattern matching e la preferenza per l'immutabilità (più difficile da far rispettare in Ruby, leggermente più facile in Python, ma ancora più difficile di quanto in lingue ML-based) sono più prezioso per calcoli su grandi insiemi di dati .

Io non lavoro in un posto come quello, quindi queste sono solo supposizioni sul motivo per cui potrei farlo nella loro posizione:

E 'generalmente un po' più veloce di linguaggi come Ruby e Python e, come staticamente tipizzato linguaggio funzionale, è generalmente un po 'più facile ragionare sul codice e sapere che non contiene bug sottili. (Sì, unit test dovrebbe aiutare catturare quelle pure, ma la garanzia in più che i numeri finanziari non sono sempre avvitato è bello avere.) Inoltre, la programmazione funzionale è strettamente legata alla matematica, più di quanto la maggior parte linguaggio di alto livello paradigmi (come, non v'è un ramo OO di matematica), quindi è bravo a modellare quello che fanno lì.

Nella mia esperienza di Quants E 'VBA (leggi: Excel) con C #, o F # a volte troppo

Modifica:

Io riformulare che, al momento della votazione in giù, io non conosco personalmente di qualsiasi Quants utilizzando caml ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top