¿Qué lenguaje es mejor para un algoritmo de futuros HFT, C ++ o python?

Para mí es evidente que la gente cree que solo hay dos opciones para los lenguajes de algoritmos comerciales. Pitón. Y C ++. Y tenemos que alejarnos de eso. (O tal vez las personas que hacen estas preguntas en Quora lo hacen, ya que la comunidad cuantitativa tiene más o menos).

Soy más un tipo C que Python, pero realmente depende de lo que estés haciendo.

La gente siempre habla de Python. Todos los “quants” que usan Quantopian lo están haciendo en Python, y una gran parte de las plataformas de código abierto son solo Python. ¿Por qué? Python es relativamente fácil de aprender y escribir (más que C ++ o C #). ¡Pero Python es feo! A la gente le encanta la sintaxis por su “expresividad”, pero el GIL es pobre y está muy por detrás de lo que tenemos ahora con cientos de núcleos en cada procesador. Las personas buscan lenguajes como C #, Java y Haskell, ya que estos lenguajes son más expertos en el campo.

Pero de nuevo, realmente depende de lo que estés haciendo. Y con eso me refiero a qué aspecto de la aplicación de negociación algorítmica. Tiene el modelo alfa, el modelo de riesgo, los algoritmos de ejecución, etc. Todos estos componentes van en su producto final. Y definir un idioma para usar para eso es una tontería.

Frecuencia

Los lenguajes que se usarían para un algoritmo de aprendizaje profundo de baja frecuencia son diferentes de los que se usarían para un servidor ubicado que realiza arbitraje estadístico y HFT. Las estrategias que superen las segundas barras (datos de marca) convertirán su proyecto más en un diseño orientado al rendimiento. Para esto, tendría que usar C ++ (o C), ensamblaje, (a menudo se trata de algo así como VHDL y no hay C), y a menudo el hardware se convierte en un problema y tendrá FPGA personalizados, colocación y kernal / sintonización de red.

Investigación

La investigación a menudo se realiza dentro de un IDE como MatLab (MathWorks – Makers of MATLAB y Simulink) (mi favorito). MatLab está diseñado como una consola interactiva y le permite realizar álgebra lineal numérica compleja y otras operaciones vectorizadas. Eclipse se puede usar para Java y C ++, y Canopy | Paquetes científicos de Python y entorno de análisis | Pensamiento para Python.

Ejecución

La mayoría de las API de ejecución (como Interactive Brokers) proporcionan una interfaz Java / C ++. Y por razones de rendimiento, C ++ es una mejor opción, ya que a menudo manejará y enviará cientos de pedidos por segundo, y un algoritmo de ejecución de mierda significa que perderá dinero debido al deslizamiento.

Conclusión

No hay un lenguaje para ser utilizado para las finanzas cuantitativas y el desarrollo de algoritmos comerciales. Averigüe exactamente lo que está haciendo y luego decida qué idioma y bibliotecas funcionarán para eso.

Para la creación de prototipos : Python, es más fácil y rápido codificar.

Para producción y comercialización real: C ++, es más rápido, su algoritmo se ejecutará más rápido y eso es muy importante en HFT.

Ambos idiomas son ampliamente utilizados en la industria.