NautilusTrader: La plataforma de trading algorítmico con IA para quants

NautilusTrader: Plataforma de trading algorítmico de alto rendimiento

Logotipo de NautilusTrader

Descripción del proyecto

NautilusTrader es una plataforma de trading algorítmico de código abierto, alto rendimiento y grado de producción. Ofrece a los traders cuantitativos un motor basado en eventos para probar carteras de estrategias de trading automatizadas con datos históricos, y desplegar esas mismas estrategias en tiempo real sin necesidad de cambiar el código. La plataforma está diseñada pensando en la "IA", lo que permite desarrollar y desplegar estrategias de trading algorítmico en un entorno Python robusto y de alto rendimiento. Su objetivo es resolver el desafío de la paridad entre los entornos de investigación/pruebas y los de trading en vivo de producción.

NautilusTrader prioriza la corrección y seguridad del software para soportar cargas de trabajo de sistemas de trading de misión crítica nativos de Python. Es independiente del tipo de activo, soportando el trading de alta frecuencia en varias clases de activos y tipos de instrumentos, incluyendo FX, Renta Variable, Futuros, Opciones, Cripto y Apuestas, a través de múltiples plataformas simultáneamente. Sus componentes principales están escritos en Rust y Cython para un rendimiento óptimo, manteniendo un entorno nativo de Python para traders y empresas.

Diagrama de NautilusTrader

Instrucciones de uso

NautilusTrader se puede instalar mediante binarios precompilados de PyPI o del índice de paquetes de Nautech Systems, o compilando desde el código fuente. Se recomienda usar la última versión de Python compatible e instalar NautilusTrader dentro de un entorno virtual.

Instalación

Recomendado: Usar el gestor de paquetes uv con un CPython "puro".

Desde PyPI:

pip install -U nautilus_trader

Desde el índice de paquetes de Nautech Systems (para versiones estables o de desarrollo):

  • Versiones estables:
    pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple
    
  • Versiones de desarrollo (última pre-lanzamiento):
    pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple
    
  • Versión de desarrollo específica:
    pip install nautilus_trader==1.208.0a20241212 --index-url=https://packages.nautechsystems.io/simple
    

Desde el código fuente:

  1. Instalar rustup:
    • Linux/macOS: curl https://sh.rustup.rs -sSf | sh
    • Windows: Descargar e instalar rustup-init.exe, luego instalar "Desktop development with C++" con Build Tools para Visual Studio 2019.
  2. Habilitar cargo:
    • Linux/macOS: source $HOME/.cargo/env
    • Windows: Iniciar nueva sesión de PowerShell.
  3. Instalar clang:
    • Linux: sudo apt-get install clang
    • Windows: Añadir Clang a Build Tools para Visual Studio 2019.
  4. Habilitar clang (Windows):
    [System.Environment]::SetEnvironmentVariable('path', "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\Llvm\x64\bin\;" + $env:Path,"User")
    
  5. Instalar uv:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  6. Clonar e instalar:
    git clone --branch develop --depth 1 https://github.com/nautechsystems/nautilus_trader
    cd nautilus_trader
    uv sync --all-extras
    

Uso de Docker

Se encuentran disponibles imágenes de contenedor con varias etiquetas. Por ejemplo, para ejecutar el contenedor JupyterLab nightly:

docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly
Luego, accede a JupyterLab en tu navegador en http://127.0.0.1:8888/lab.

Características clave

  • Alto Rendimiento: Núcleo escrito en Rust con red asíncrona usando tokio.
  • Fiable: Seguridad de tipos y de hilos potenciada por Rust, con persistencia de estado opcional respaldada por Redis.
  • Portable: Independiente del sistema operativo (Linux, macOS, Windows) y desplegable a través de Docker.
  • Flexible: Adaptadores modulares permiten la integración con cualquier API REST o feed de WebSocket.
  • Gestión de Órdenes Avanzada: Soporta varias opciones de tiempo en vigor (IOC, FOK, GTC, GTD, DAY, AT_THE_OPEN, AT_THE_CLOSE), tipos de órdenes avanzados, disparadores condicionales, instrucciones de ejecución (solo postear, solo reducir, icebergs) y órdenes de contingencia (OCO, OUO, OTO).
  • Personalizable: Componentes y sistemas personalizados definidos por el usuario que aprovechan la caché y el bus de mensajes.
  • Capacidades de Backtesting: Soporta múltiples plataformas, instrumentos y estrategias simultáneamente con datos históricos de ticks de cotización, ticks de trading, barras, libro de órdenes y datos personalizados con resolución de nanosegundos.
  • Despliegue en Vivo: Implementaciones de estrategias idénticas para backtesting y trading en vivo.
  • Multiplataforma: Facilita estrategias de creación de mercado y arbitraje estadístico.
  • Entrenamiento de IA: Motor de backtesting rápido adecuado para entrenar agentes de trading de IA (RL/ES).
  • Entorno Nativo de Python: Los componentes críticos del núcleo están en Rust/Cython para el rendimiento, proporcionando un entorno nativo de Python para traders profesionales.
  • Modos de Alta Precisión: Soporta precisión entera de 64 bits (estándar) y 128 bits (alta) para tipos de valor centrales (Precio, Cantidad, Dinero).

Usuarios objetivo

  • Traders Cuantitativos: Individuos o empresas que desarrollan y despliegan estrategias de trading algorítmico.
  • Desarrolladores: Interesados en construir sistemas de trading de alto rendimiento o contribuir a una plataforma de código abierto.
  • Investigadores: Académicos o profesionales de la industria que realizan investigaciones en trading algorítmico, aprendizaje automático e IA en finanzas.

Enlaces del proyecto

Escenarios de aplicación

  • Trading Algorítmico: Desarrollo y ejecución de estrategias de trading automatizado en diversas clases de activos (FX, Renta Variable, Futuros, Opciones, Cripto, Apuestas).
  • Trading de Alta Frecuencia (HFT): Aprovechar el rendimiento y las capacidades de baja latencia de la plataforma para estrategias HFT.
  • Backtesting y Simulación: Pruebas rigurosas de estrategias de trading con datos históricos y precisión granular (resolución de nanosegundos).
  • Investigación Cuantitativa: Realización de investigaciones sobre la efectividad de las estrategias de trading y el comportamiento del mercado.
  • IA/Aprendizaje Automático en el Trading: Entrenamiento y despliegue de agentes de trading de IA utilizando el motor de backtesting rápido.
  • Creación de Mercado: Implementación de estrategias de creación de mercado en múltiples plataformas.
  • Arbitraje Estadístico: Desarrollo y ejecución de estrategias que explotan las disparidades de precios entre activos o mercados relacionados.
  • Trading Multiplataforma: Operar simultáneamente en diferentes plataformas de trading gracias a sus capacidades multiplataforma.

Compartir este artículo