Cómo “usar Python como pegamento” en su código de baja latencia
Ser un desarrollador de Python en el espacio comercial de baja latencia no es fácil. Considerando esto C++ es significativamente más rápido, a menudo se prefiere, y los desarrolladores de Python a menudo se sienten presionados para aprender un lenguaje más complejo.
Ellos no lo necesitan. Dependiendo de lo que desee para reducir la latencia de su código, Python absolutamente puede ser acelerado. Baja latencia Las personas que trabajan con Python elogian su versatilidad y compatibilidad con una amplia gama de compiladores y lenguajes adicionales, aunque lo admiten en algunos casos. C++ no se puede exceder.
C++ para HFT, Python para criptografía
Si su sueño es escribir código de baja latencia en un entorno comercial de alta frecuencia, probablemente ya haya comenzado a aprender C++.
“Puedes ver mucha evidencia de empresas que usan Python, AHL”, dice Saeed Amen, cofundador de Turnleaf Analytics. muy publico al respecto pero cuando se trata de negociación y ejecución de alta frecuencia, otros lenguajes se destacan más.
Sin embargo, cuando la ejecución de transacciones de alta velocidad no es el único enfoque, Python sobresale. Amen señala que Python se usa principalmente para “comercio e investigación cuantitativa a bajas frecuencias”. Esto se debe a que “la investigación debe generar una idea rápidamente e implementarla de manera efectiva”, que es la fortaleza de Python.
Python también funciona bien para el comercio de criptomonedas de baja latencia. Amin dice que “el mercado de las criptomonedas se mueve más lentamente” y, como resultado, no es necesario ajustar de forma insoportable las capacidades de C++.
Cómo acelerar Python
Más a menudo, la recomendación para acelerar Python es usar la biblioteca NumPy o Cython, un lenguaje de subconjunto de superconjunto de C y Python. En un seminario web reciente de la firma de análisis comercial Profitview, el excuantitativo de Citi y Citadel, Antony Peacock, dijo: “Si está usando NumPy, es probable que se construya contra algo como la biblioteca Intel Maths Kernel que hace la vectorización por usted”.
En cambio, Amen recomienda “una gran herramienta nueva, Numba, que puede acelerar su código sin escribirlo en otro idioma”.
En su sitio web, Numba se anuncia a sí mismo como “un compilador JIT de código abierto que convierte algunos códigos de Python y NumPy en código de máquina rápido”. Una de sus características clave es que “genera código personalizado para diferentes tipos de datos de matriz y diseños para optimizar el rendimiento”.
Amin advierte que esto “no es un almuerzo gratis”. Debería “dedicar algo de tiempo a escribir el código, especialmente si se enfoca en acelerar el código con cuellos de botella específicos”.
Deberías aprender este idioma en su lugar.
El problema de aprender C++ es que tanto él como Python son “lenguajes de propósito general”. Si está buscando un lenguaje más específico para aprender que le permita sobresalir, KDB+ es un gran candidato.
Un lenguaje de base de datos se especializa en manejar grandes cantidades de datos rápidamente, por lo que Amen dice, “si está tratando con grandes cantidades de datos de alta frecuencia, vale la pena aprender KDB”.
La rareza de los desarrolladores de KDB también les permite obtener salarios más altos. Por ejemplo, un desarrollador de KDB del lado de la compra puede ganar un sueldo hasta 600 mil dolares en Nueva York. Combine esto con un conocimiento experto de Python y será aún más impresionante.
Lo que hace que los codificadores de Python sean tan buenos para aprender es cómo los dos lenguajes funcionan juntos. “KDB es la carga de trabajo pesada y Python es el análisis adicional”, dice Amen, y poder realizar todo el proceso “sin tener que sacar los datos de la base de datos y hacerlo en otro lugar” hace que el código sea aún más simple.
Haz que tu código sea mayor que la suma de sus partes
Sin embargo, la mejor manera de acelerar Python es no concentrarse en una sola cosa, sino considerar cómo puede combinarlas de manera efectiva. “Debe usar Python como un pegamento para otras bibliotecas e idiomas”, dice Amin.
Como ejemplo, dice Amen, puede “comenzar a codificar con NumPy y NumbA, reescribir el código con Cython y luego combinarlo con otras tecnologías como KDB para preprocesar datos en el disco”.
Sin embargo, incorporar demasiadas tecnologías alternativas conlleva riesgos y obstáculos. Amin dice: “Si hace que su código sea más complejo, es más probable que se rompa y tendrá que hacer más pruebas unitarias”.
¿Tiene una historia secreta, un consejo o un comentario que le gustaría compartir? Contacto: alex.mcmurray@efinancialcareers.com En primer lugar.
Ten paciencia si dejas un comentario debajo de este artículo: todos nuestros comentarios están moderados por personas. A veces, estas personas pueden estar dormidas o lejos de su escritorio, por lo que su comentario puede tardar un poco en aparecer. Finalmente, a menos que sea ofensivo o difamatorio (que no lo será).
Crédito de la foto: eFinancialCareers/Dall-E