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.
- ¿Puede un modelo de aprendizaje automático utilizar múltiples algoritmos como la regresión logística, las redes neuronales y los árboles de decisión al mismo tiempo?
- La inteligencia artificial y la robótica están progresando a un ritmo cada vez mayor. ¿Qué debe hacerse para la fuerza laboral desplazada?
- ¿Qué es el cálculo de Lambda en términos simples?
- ¿Cuáles son los pros y los contras de React.js y Flux? ¿Son el futuro del desarrollo front-end?
- ¿Qué modelo de aprendizaje automático ha demostrado ser más exitoso (o es el más utilizado) en el comercio / finanzas cuantitativas?
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.