3 votos

Comercio algorítmico: Python vs SQL

Soy nuevo en el comercio de algo. Pero tengo un poco de experiencia en codificación en SQL. Ahora estoy planeando desarrollar un sistema de comercio algorítmico. Aquí estoy almacenando todos los datos históricos en la base de datos (PostgreSQL DB).

Inicialmente estaba planeando codificar todos los indicadores técnicos y estrategias en Python. Pero como estoy usando una base de datos ahora estoy en la confusión si escribir el código para los indicadores técnicos en Python o debo calcular esos valores en SQL sólo y almacenar en la base de datos.

Por favor, aporte sus opiniones, pros y contras y también cualquier otra sugerencia.

8voto

Hamish Gibson Puntos 11

Python tiene un montón de excelentes bibliotecas para calcular indicadores técnicos para usted, ta y ta-lib son geniales. Estas librerías tienen docenas de indicadores para usar y su documentación es extremadamente detallada. Además, estas bibliotecas están construidas sobre Pandas, lo que ayuda en lo que respecta a las tablas dinámicas y al esquema de la base de datos. Las bibliotecas son rápidas de ejecutar y muy precisas también.

Esto me lleva al siguiente punto: depende de la cantidad de datos que tengas y de lo que pienses hacer con ellos. Si tienes grandes cantidades de datos, el almacenamiento en matrices serializadas podría no ser lo mejor y acapararía tu memoria. Las bases de datos SQL serían lo mejor para grandes cantidades de datos, ya que entonces se puede utilizar alguna API inteligente para CRUD a su base de datos también.

Si yo fuera tú, calcularía los indicadores usando Python, ya sea usando las bibliotecas o funciones escritas a medida. Luego almacenaría los datos en una base de datos SQL.

4voto

TigerInCanada Puntos 113

Has dicho que estás desarrollando un algorithmic trading system . En primer lugar, le sugeriría que considerara un producto estándar que le permitiera hacer algunas operaciones sin empezar desde cero para ahorrarse tiempo y molestias.

Ahora a la pregunta en cuestión - utilizar python. La función de una base de datos SQL es almacenar y servir datos relacionales. La mayor parte del sistema de comercio no es esto y será mejor utilizar un lenguaje de programación de propósito general. Usted todavía puede utilizar SQL en el backend y acceder a él de forma programática con python a través de psycopg2 o sqlalchemy bibliotecas. Pero, por ejemplo, su sistema de comercio necesitará hacer cosas como presentar un pedido . No se puede hacer esto desde SQL - esto se hace en la capa de aplicación y luego los resultados pueden ser persistidos a la DB.

2voto

Alex Puntos 18

Hay varias consideraciones al respecto:

  1. ¿Su servidor de bases de datos se utiliza únicamente para este comercio algorítmico? ¿O también se utiliza para dar soporte a un servidor de aplicaciones?
  2. ¿Cómo de complejo va a ser su análisis técnico? Algunas AT son bastante sencillas de implementar tanto en SQL como en Python, pero me imagino que implementar algo como SAR parabólico será bastante engorroso en SQL. Al menos será tremendamente ineficiente porque probablemente necesite usar cursores.

Con esto en mente, generalmente apoyo poner tanta lógica en su lado de python en su lugar. Python tiene excelentes bibliotecas para las operaciones matemáticas vectoriales utilizando pandas y scipy que hace que la aplicación del AT sea muy natural. Utilizar SQL estrictamente para el almacenamiento y la recuperación. Esto también tiene la ventaja de que si decides cambiar tu estrategia de almacenamiento (muy posible, ya que para alguna estructura de datos Time Series DB podría ser mejor, o decides almacenar los datos en un sistema de archivos plano), no necesitarás cambiar tu capa lógica. pandas tienen un excelente soporte para la carga de datos desde varios almacenamientos de datos también.

1voto

tobyS Puntos 108

Se puede utilizar el alto rendimiento que ofrecen los servidores de bases de datos para realizar cálculos con grandes cantidades de datos, pero SQL es un lenguaje lógico orientado principalmente a la búsqueda en la base de datos. No está pensado para realizar cálculos y modelados muy complejos. Sin embargo, por ejemplo, la base de datos Oracle proporciona el llamado funciones analíticas lo que le permite realizar un tratamiento avanzado de los datos.

Yo recomendaría calcular todo lo posible en la base de datos para aprovechar su alto rendimiento e implementar los modelos (es decir, los cálculos complejos que necesitan funciones matemáticas y estadísticas avanzadas) en Python.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X