Pergunta

Falando a vários quants / hedgies, cheguei à conclusão de que um grande número deles parece estar usando um idioma caseiro ou o OCAML para muitas tarefas. O que muitos deles não podiam responder era o porquê.

Eu certamente posso entender por que eles não gostariam de usar o C ++ na maior parte, mas por que o OCAML é superior para esses usos em comparação com outras linguagens de script, digamos Python, Ruby etc?

Foi útil?

Solução

Tente ler CAML Trading - Experiências com programação funcional em Wall Street Por Yaron Minsky e Stephen Weeks (desculpas, enquanto este artigo costumava ser hospedado gratuitamente na Jane Capital, ele não está mais lá, então deixo o link da ACM para referência). Eles entram em grandes detalhes sobre o que eles acham que são as vantagens e desvantagens da OCAML, embora, na maioria das vezes , o que você tem).

Os autores trabalham na Jane Street Capital, que investiu fortemente no código da OCAML.

Atualizar: Veja também o tópico Em qual (s) linguagem (s) de programação (s) é o software de negociação algorítmica escrito?. Um dos comentários Menciona uma apresentação que Yaron Minsky deu na CMU no uso do CAML da Jane Street Capital. Cerca de uma hora e muito interessante.

Atualizar dois: Yaron escreveu outra visão geral, desta vez para a fila ACM, chamada OCAML para as massas.

Outras dicas

Veja, por exemplo, o Linguagens de programação Shootout Para comparações de velocidade:

Agora, todos nós ouvimos a linha sobre mentiras, mentiras e referências, para que grãos de sal recomendados - mas essa é uma comparação bastante bem feita. No final do dia, importa o que é feito com o próprio problema e dados.

A primeira coisa a ter em mente é que, embora o OCAML tenha uma sintaxe repl e clara e sucinta, não é uma linguagem dinâmica como Python ou Ruby. Possui digitação estática e compila com código nativo.

Para análise quantitativa, as linguagens de script são mais convenientes. Você tem acesso a muitas bibliotecas, é fácil fazer scripts rápidos e sujos para gerenciar informações, e a criação de programas pequenos a médios é fácil, mesmo para um não programador.

Para criar algoritmos e sistemas que realmente se envolvem no comércio, você quer algo como o OCAML. As principais vantagens do OCAML são sua natureza funcional, legibilidade (lê quase tão bem quanto uma linguagem dinâmica como Python), confiabilidade, mas principalmente velocidade. O OCAML é muito, muito mais rápido do que a maioria das pessoas acredita - é C rápido (na verdade um pouco mais lento que C, mas muitas, muitas vezes mais rápidas que as linguagens dinâmicas). O OCAML é rápido o suficiente para criar um sistema HFT, o que não é algo que pode ser dito para Python ou Ruby.

Além disso, lembre -se de Jane Street (o evangelista mais vocal de ocaml) adotou o OCAML antes que Scala e Clojure entrassem em cena.

Sendo uma linguagem funcional, é de natureza matemática, que provavelmente se encaixa bem com os tipos de problemas que essas empresas precisam resolver. E como outros apontaram, ele tem um bom perfil de desempenho.

Talvez seja por isso que a Microsoft cooptou o OCAML para f#

Porque é incrivelmente rápido (e muito mais sucinto que o C ++).

Pegando na posta Página dedicada ao OCAML, com mais links para o envolvimento da OCAML (incluindo um blog). O desempenho da OCAML é geralmente um grande argumento, mas acho que também os "quants" adoram porque o paradigma funcional se presta muito bem ao seu tipo de trabalho analítico, então acho que eles são os primeiros adotantes. E então as empresas descobrem que é igualmente adequado para programação de sistemas.

Paralelização trivial em comparação com Python/Ruby? Pelo menos isso é verdade para F#, mas deve ser verdadeiro para CAML/OCAML por quase os mesmos motivos.

Por mais que eu ame Ruby, não seria minha primeira escolha para tarefas pesadas que são principalmente matemáticas ou agregações, e nem Python nem Ruby têm realmente um ótimo apoio para o Multithreading ainda.

A termos de oleodutos relativamente complexos dos cálculos, graças à correspondência de padrões e à preferência pela imutabilidade (mais difícil de aplicar em Ruby, um pouco mais fácil no Python, mas ainda mais difícil do que em idiomas baseados em ML) são mais valiosos para cálculos em grandes conjuntos de dados.

Eu não trabalho em um lugar assim, então esses são apenas adivinhação sobre o motivo de eu fazer isso na posição deles:

Geralmente, é um pouco mais rápido do que idiomas como Ruby e Python e, como uma linguagem funcional estaticamente digitada, geralmente é um pouco mais fácil de argumentar sobre o código e saber que ele não contém bugs sutis. (Sim, os testes de unidade devem ajudar a captá-los também, mas é bom ter uma garantia extra de que seus números financeiros não estão se acalmando. Paradigmas (como, não há um ramo de matemática OO), por isso é bom em modelar o que eles realmente fazem lá.

Na minha experiência de quants, é VBA (leia -se: Excel) com C#, ou F# às vezes também

Editar:

Vou reformular que, para o voto, não sei pessoalmente de algum Quants usando Caml ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top