Pregunta

En declaraciones a una serie de cuantos / hedgies, llegué a la conclusión de que un gran número de ellos parecen estar utilizando un lenguaje homebrew o OCaml para muchas tareas. Lo que muchos de ellos no podían responder era por qué.

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

¿Fue útil?

Solución

Trate de leer de comercio Caml - experiencias con la programación funcional en Wall Street por Yaron Minsky y Stephen Semanas (disculpas, mientras que este artículo se utiliza para ser alojado gratuitamente en Jane capital, ya no está allí, así que dejo el enlace de ACM para referencia). Entran en gran detalle sobre lo que sienten son las ventajas y desventajas de OCaml, a pesar de que en su mayor parte lo toman como un hecho que es mejor que la mayoría de las otras opciones que consideraban (es decir, no un montón de comparaciones directas con C ++, Python , lo que tiene).

Los autores trabajan en la calle de Jane capital que ha invertido mucho en código OCaml.

Actualizar : Véase también el hilo ¿Qué idioma (s) de programación es el software de comercio algorítmico escrito en? . Uno de los comentarios href="https://stackoverflow.com/questions/1996432/what-programming-languages-is-algorithmic-trading-software-written-in/1996448#1996448"> menciona aún la presentación Yaron Minsky dio en la CMU en el uso de Jane Street capital de Caml. Alrededor de una hora de duración, y muy interesante.

Actualizar Dos : Yaron ha escrito otra información general, esta vez para ACM cola, llamado OCaml para las masas .

Otros consejos

Ver, por ejemplo, los lenguajes de programación tiroteo para las comparaciones de velocidad:

Ahora, todos hemos escuchado sobre la línea de mentiras, malditas mentiras y los puntos de referencia de manera granos de sal recomendado - pero esto una comparación bastante bien hecho. Al final del día, es importante lo que uno se hace con el propio problema y datos.

Lo primero que debe tener en cuenta, es que a pesar de OCaml tiene un REPL y la sintaxis clara, concisa, no es un lenguaje dinámico como Python o Ruby. Cuenta con tipos estáticos y compila a código nativo.

Para el análisis cuantitativo, lenguajes de script son más convenientes. Usted tiene acceso a una gran cantidad de bibliotecas, es fácil de hacer guiones rápidos y sucios para gestionar la información, y la creación de pequeñas y medianas programas es fácil, incluso para un no-programador.

Para la creación de algoritmos y sistemas que realmente se involucran en el comercio, que desea algo así como OCaml. Las principales ventajas de OCaml son su carácter funcional, facilidad de lectura (se lee casi tan bien como un lenguaje dinámico como Python), fiabilidad, pero sobre todo velocidad. OCaml es mucho, mucho más rápido que la mayoría de la gente cree - es rápido C (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 para crear un sistema de negociación de alta frecuencia, que no es algo que se puede decir, ya sea para Python o Ruby.

Además, tenga en cuenta Jane Street (la mayoría de los vocales evangelista OCaml) adoptó OCaml antes Scala y Clojure llegó a la escena.

Al ser un lenguaje funcional, es de naturaleza matemática, lo que probablemente se adapte a la perfección con el tipo de problemas que estas empresas necesitan para resolver. Y, como otros han señalado, que tiene un buen perfil de rendimiento.

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

Debido a que es increíblemente rápido (y mucho más sucinta que C ++).

Recogiendo en el poste de Don, Jane Street Captial incluso tiene un dedicada a OCaml , con más enlaces a su compromiso OCaml (incluyendo un el blog ). Rendimiento de OCaml es por lo general una gran discusión, pero creo que también los "cuantos" aman porque el paradigma funcional se presta muy bien a su tipo de trabajo analítico, así que creo que son los primeros en adoptar. Y entonces las empresas descubren que es igualmente apropiado para la programación de sistemas.

paralelización trivial en comparación con Python / Ruby? Al menos esto es cierto para F #, pero debe ser cierto para Caml / OCaml por las mismas razones.

Por mucho que me encanta Ruby, no sería mi primera opción para tareas de alta resistencia que son en su mayoría matemática o agregaciones, y ni Python ni Rubí realmente tener un gran apoyo para multithreading todavía.

La concisión de tuberías relativamente complejos de los cálculos gracias a la coincidencia de patrones y la preferencia por la inmutabilidad (más difícil de cumplir en Ruby, un poco más fácil en Python, pero aún más difícil que en lenguajes basados-ML) son más valiosos para los cálculos en grandes conjuntos de datos .

Yo no trabajo en un lugar como ese, por lo que estos son sólo conjeturas en cuanto a por qué yo podría hacerlo en su posición:

Por lo general es un poco más rápido que los lenguajes como Ruby y Python y, como tipos estáticos lenguaje funcional, por lo general es algo más fácil de razonar sobre el código y saber que no contiene errores sutiles. (Sí, las pruebas unitarias deben ayudar a capturar a esos también, pero garantía adicional de que sus números financieros no están penetradas hasta es bueno tener.) Además, la programación funcional es muy estrechamente ligada a las matemáticas, más que la mayoría lenguaje de alto nivel paradigmas (como, no es una rama de las matemáticas OO), por lo que es bueno en el modelado de lo que realmente hacen allí.

En mi experiencia de Quants es VBA (léase: Excel) con C #, o f # veces demasiado

Editar:

Voy a expresarlo de otro modo, en la votación abajo, no sé personalmente de cualquier Quants utilizando caml ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top