programming-languages ocaml quantitative-finance

programming languages - ¿Por qué los fondos de cobertura y los servicios financieros utilizan a menudo OCaml?



programming-languages quantitative-finance (9)

Hablando de un número de quants / hedgies, llegué a la conclusión de que un gran número de ellos parecen estar usando ya sea un lenguaje homebrew o OCaml para muchas tareas. Lo que muchos de ellos no pudieron responder fue por qué.

Ciertamente puedo entender por qué no querrían usar C ++ en su mayor parte, pero ¿por qué OCaml es superior para estos usos en comparación con otros lenguajes de script, por ejemplo Python, Ruby, etc.?


¿Paralelismo trivial comparado con Python / Ruby? Al menos esto es cierto para F #, pero debería ser cierto para Caml / OCaml por muchas razones similares.

Por mucho que ame a Ruby, no sería mi primera opción para tareas pesadas que son en su mayoría matemáticas o agregados, y ni Python ni Ruby tienen un gran soporte para el subprocesamiento múltiple todavía.

La terseness de líneas de cálculos relativamente complejos gracias a la coincidencia de patrones y la preferencia por la inmutabilidad (más difícil de imponer en Ruby, algo más fácil en Python pero aún más difícil que en los lenguajes basados ​​en ML) es más valiosa para los cálculos en grandes conjuntos de datos.


Al ser un lenguaje funcional, es de naturaleza matemática, lo que probablemente encaja perfectamente con los tipos de problemas que estas empresas necesitan resolver. Y como otros han señalado, tiene un buen perfil de rendimiento.

Tal vez esta es la razón por la que Microsoft cooptó OCaml para F #


En mi experiencia de Quants es VBA (lea: Excel) con c #, o f # a veces también

Editar:

Voy a reformular eso, para el voto negativo, no conozco personalmente los Quants que usan caml ...


Lo primero que hay que tener en cuenta es que, aunque OCaml tiene una REPL y una sintaxis clara y concisa, no es un lenguaje dinámico como Python o Ruby. Tiene tipificación estática y compila código nativo.

Para el análisis cuantitativo, los lenguajes de script son más convenientes. Usted tiene acceso a muchas bibliotecas, es fácil hacer scripts rápidos y sucios para administrar la información, y crear programas pequeños a medianos es fácil incluso para un programador.

Para crear algoritmos y sistemas que realmente se involucran en el comercio, usted quiere algo como OCaml. Las principales ventajas de OCaml son su naturaleza funcional, su legibilidad (se lee casi tan bien como un lenguaje dinámico como Python), su fiabilidad, pero sobre todo la velocidad. OCaml es mucho, mucho más rápido de lo que la mayoría de la gente cree: es C rápido (en realidad, un poco más lento que C, pero muchas, muchas veces más rápido que los lenguajes dinámicos). OCaml es lo suficientemente rápido como para crear un sistema HFT, que no es algo que se pueda decir para Python o Ruby.

Además, tenga en cuenta que Jane Street (la evangelista más vocal de OCaml) adoptó OCaml antes de que Scala y Clojure entraran en escena.


No trabajo en un lugar como ese, así que estas son solo suposiciones de por qué podría hacerlo en su posición:

En general, es bastante más rápido que lenguajes como Ruby y Python y, como lenguaje funcional estático, generalmente es más fácil razonar sobre el código y saber que no contiene errores sutiles. (Sí, las pruebas unitarias también deberían ayudar a detectarlas, pero es bueno tener una seguridad adicional de que sus números financieros no se arruinan). Además, la programación funcional está muy relacionada con las matemáticas, más que la mayoría de los lenguajes de alto nivel. paradigmas (como, no hay una rama OO de las matemáticas), así que es bueno modelar lo que realmente hacen allí.


Porque es increíblemente rápido (y mucho más sucinto que C ++).


Recogiendo la publicación de Don, Jane Street Captial incluso tiene una página dedicada a OCaml , con más enlaces a su participación en OCaml (incluido un blog ). El rendimiento de OCaml suele ser un gran argumento, pero creo que también a los "quants" les encanta porque el paradigma funcional se presta muy bien a su tipo de trabajo analítico, por lo que creo que son los primeros en adoptarlos. Y luego las empresas descubren que es igualmente adecuado para la programación de sistemas.


Trate de leer Caml trading: experiencias con la programación funcional en Wall Street por Yaron Minsky y Stephen Weeks (disculpas, aunque este artículo solía ser alojado de forma gratuita en Jane Capital, ya no está allí, así que dejo el enlace ACM para referencia). Entran en gran detalle sobre lo que creen que son las ventajas y desventajas de OCaml, aunque en su mayor parte consideran que es mejor que la mayoría de las otras opciones que consideraron (es decir, no hay muchas comparaciones directas con C ++, Python). , Que tienes).

Los autores trabajan en Jane Street Capital, que ha invertido mucho en el código OCaml.

Actualización : vea también el hilo ¿En qué lenguaje de programación está escrito el software de negociación algorítmica? . Uno de los comments menciona una presentación que Yaron Minsky dio en CMU sobre el uso que hizo Jane Street Capital de Caml. Alrededor de una hora de duración, y muy interesante.

Actualización dos : Yaron ha escrito otro resumen, esta vez para ACM Queue, llamado OCaml para las masas .


Vea, por ejemplo, los lenguajes de programación shootout para comparaciones de velocidad:

Ahora, todos escuchamos la línea sobre mentiras, malditas mentiras y puntos de referencia, por lo que se recomiendan granos de sal, pero esta es una comparación bastante bien hecha. Al final del día, es importante lo que uno hace con el problema y los datos propios.