3 votos

Pruebas retrospectivas en Python continúan construyendo o comprando software disponible

Comencé a construir una aplicación de backtesting en Python para probar y optimizar estrategias de trading, pero he pausado para evaluar si debo continuar con el desarrollo o comprar software para acelerar el progreso.

Mis consideraciones incluyen la velocidad de procesamiento y datos, el costo y el tiempo de implementación, y el tiempo de uso de mi software para operar.

Me gustaría recibir consejos y opiniones sobre si tiene sentido migrar mis pruebas a una plataforma o continuar construyendo, comprando datos y aumentando la velocidad configurando infraestructura en la nube.

Velocidad de procesamiento: Mis pruebas iniciales de velocidad sugieren que el software (por ejemplo, TradeStation) procesa mucho más rápido, como se esperaba. Estoy utilizando procesamiento en paralelo y algoritmos para aumentar la velocidad, pero creo que tal vez necesite configurar infraestructura de computación en la nube para mejorar la velocidad aún más (si es necesario).

Fuentes de datos: Quiero probar estrategias de opciones, pero obtener estos datos no es tan sencillo. Por ejemplo, TradeStation no parece tener datos históricos de opciones para contratos vencidos, y algunas fuentes de datos no son "reales", sino que se calculan utilizando modelos (por ejemplo, Black-Scholes). Algunos brókers ofrecen datos de opciones, otros ofrecen backtesting, pero pocos ofrecen ambas cosas.

Exportar resultados de backtests: No quiero que esto limite la escalabilidad de las pruebas. El código Python local solo está limitado por mis GPUs, pero el software externo puede no permitir descargas de datos o imponer restricciones.

Otras consideraciones

  1. Pérdida de personalización — ¿Perderé la capacidad de personalizar aspectos que podrían afectar los resultados, como cambiar los algoritmos de optimización (genéticos, vectoriales, de malla, etc.)?
  2. Otras ventajas — Puede haber beneficios adicionales como seguridad, actualizaciones y más.
  3. Costo/Tiempo — Para obtener datos de opciones confiables, es posible que necesite suscribirme a un servicio. Exportar datos de opciones podría ser más caro que ejecutar pruebas en su plataforma.

Posibilidades

QuantConnect ofrece datos históricos de opciones para contratos vencidos, una API y compatibilidad con Python. Publicita "pruebas ilimitadas", pero los usuarios pueden encontrarse con límites de registro relacionados con el guardado de resultados.

TradingView es personalizable pero utiliza Pine Script, no Python. Tiene una API pero no datos de opciones; aunque podría ser posible importar datos de opciones de otras plataformas.

Continuar con el desarrollo requerirá configurar el entorno adecuado de dev ops y computación en la nube para aumentar la velocidad. También necesitaré comprar e integrar datos de opciones confiables.

Resumí cuáles creo que son los pros y los contras de los diferentes enfoques, así como lo que pienso acerca de cada enfoque en la tabla a continuación.

Opciones

Pro

Contras

Entre líneas

QuantConnect

Velocidad, capital, datos históricos de opciones, API, utiliza Python

Las "pruebas ilimitadas" pueden estar limitadas por límites de registro

El más rápido pero potencialmente el más costoso de escalar.

TradingView

Datos de capital, posible importación de datos de opciones, backtesting ilimitado

Utiliza Pine Script (no Python), no datos históricos de opciones

Se necesitan soluciones alternativas para importar/exportar datos de opciones y resultados de backtests

Continuar con el desarrollo

Backtesting ilimitado, más económico

Debo configurar infraestructura en la nube y software

El más lento, con posibles obstáculos desconocidos más allá de otras soluciones

Preguntas

  1. ¿Debería priorizar la construcción de infraestructura de backtesting en la nube o migrar a una plataforma existente como QuantConnect, TradingView u otro proveedor?
  2. ¿Qué tan significativos son los límites de registro o las restricciones para descargar datos de plataformas como QuantConnect o TradingView para backtesting a gran escala?

Agradezco de antemano sus comentarios.

0voto

egyptianlamp Puntos 33

Yo, junto con mi equipo, hemos escrito un marco de comercio algorítmico basado en Python e infraestructura en TradingStrategy.ai para protocolos de finanzas descentralizadas, así que permíteme compartir mis pensamientos.

Principalmente:

  • Para casos de uso comunes, como el comercio de opciones en mercados establecidos, deberías encontrar bibliotecas de Python disponibles, incluso si no son frameworks completos de backtesting
  • Puedes personalizar estos según tus necesidades
  • A menos que seas un desarrollador experto en Python, desarrollar tu propio framework es una buena experiencia de aprendizaje, pero consume mucho tiempo

Tiempo al mercado

  • Si puedes empezar con TradingView, TradeStation, MetaTrader u otro software similar, deberías hacerlo
  • Es mejor tener cero o un momento y luego descubrir cómo hacerlo correctamente

Sobre el rendimiento del código en Python:

  • Para análisis de datos, Python utiliza bibliotecas nativas como NumPy y Polars y la velocidad no es un problema, a menos que estés haciendo trading de alta frecuencia
  • Por ejemplo, alquilamos un servidor potente de Google Cloud para backtesting, ejecutamos Datalore para libretas de Python, con 64 CPUs, donde pagamos por hora y tenemos un script para apagar automáticamente el servidor
  • La mayoría del backtesting se realiza en optimización/búsqueda en cuadrícula y estas tareas son triviales de paralelizar
  • Nuestro enfoque es híbrido: construimos nuestros datos de indicadores usando cálculos vectorizados con Pandas, pero el bucle de decisión de trading aún es event driven ya que de esta manera podemos tomar el código de backtest no modificado y ponerlo en la ejecución de trading en vivo

Sobre las fuentes de datos para el comercio de opciones:

  • El comercio de opciones es más especializado, por lo que los conjuntos de datos son naturalmente más escasos
  • Alguien recopila estos datos, pero es posible que necesites pagar por ellos
  • Por lo general, los conjuntos de datos más sofisticados y las descargas más grandes están detrás de un "plan profesional" o "empresarial"
  • Por eso me encantan los mercados de criptomonedas, ya que todos los datos son públicos y gratuitos
  • No soy un experto en trading de opciones en finanzas tradicionales, así que no puedo darte indicaciones sobre fuentes de datos para tus necesidades específicas

Sobre la personalización:

  • Estamos utilizando nuestros propios conjuntos de datos, tipos de órdenes de trading, que no son compatibles con ningún servicio existente como TradingView
  • Debido a que los datos DeFi son algo especiales, tuvimos que escribir nuestro propio backtester
  • Todavía podemos utilizar bibliotecas de Python existentes como pandas_ta y talib
  • Incluso si obtienes un backtester con una herramienta lista, necesitas pensar en la ejecución de trading en vivo (a menos que planees hacerlo manualmente)

Sobre devops

  • Para trading en vivo, vas a necesitar algún tipo de soluciones devops en cualquier caso
  • La mayoría de los problemas están relacionados con APIs de terceros fallidas y cómo manejar y recuperar estas situaciones
  • Esto puede implicar servidores, alertas, etc. y personas - las personas son las más importantes aquí
  • Estamos "registrando" desde la ejecución en vivo a canales de Discord - uno por estrategia, pero los chats grupales de Telegram y los bots también son populares para alertas y actualizaciones de estado
  • Los servidores son baratos, principalmente necesitas conocimientos de sysadmin con cualquier solución en Python
  • Sin embargo, esto puede llegar después de "1.0" cuando ya tengas algo establecido, aunque esté hecho con cinta adhesiva

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