Cómo una Teoría China de Análisis Bursátil Migró a Rust
En el trading algorítmico asiático, existe un concepto popular de análisis técnico llamado Chan Lun (Chan Lun, o la teoría 'Chan Zhong Shuo Chan'). Eliminando la parafernalia filosófica sobre el Zen y la sabiduría oriental, en su esencia es un modelo geométrico estricto de descomposición fractal de gráficos de precios en patrones: picos, valles, segmentos y las llamadas zonas de consolidación central.
La biblioteca czsc trajo estos algoritmos al código. El proyecto fue escrito originalmente en Python puro, pero cuando se trataba de iterar a través de datos de ticks y manejar cientos de señales en tiempo real, el intérprete no podía seguir el ritmo. En la rama 1.0, los autores reescribieron todo el núcleo matemático en Rust, dejando los familiares enlaces de Python en el exterior vía PyO3.
Desglosemos cómo funciona esta herramienta y por qué es interesante más allá del mercado chino.
Bajo el Capó
La arquitectura del proyecto está claramente dividida en dos capas: una capa computacional rápida en Rust y una interfaz de usuario en Python.
La capa de Rust (czsc._native) maneja el trabajo pesado:
- Estructuras de datos básicas y fusión de barras en timeframes superiores
- Reconocimiento de patrones geométricos para la teoría Chan (fractales
FX, segmentosBI, zonasZS) - Una biblioteca de más de 220 funciones de señal listas para usar
- Indicadores técnicos (SMA, EMA, Bandas de Bollinger)
La capa de Python organiza los flujos de trabajo:
- Conectores a fuentes de datos como Tushare, TQSdk y exchanges de criptomonedas vía CCXT
- Construcción de estrategias y composición de eventos de trading
- Generación de informes HTML independientes con gráficos interactivos
Este enfoque ofrece una buena mejora de velocidad: analizar decenas de miles de velas y generar señales ocurre sin los retrasos típicos de Python.
Inicio Rápido
Se requiere Python 3.10 o superior. Si se instala desde PyPI, no se necesita un compilador Rust ya que el autor construye paquetes wheel precompilados para plataformas populares:
Si se construye desde el código fuente, necesitarás un cargo reciente y la utilidad maturin:
Trabajando con Gráficos y Reconocimiento de Patrones
La biblioteca acepta cotizaciones como un DataFrame estándar pandas.DataFrame, luego las convierte a estructuras RawBar y calcula la geometría del movimiento de precios:
El objeto CZSC filtra automáticamente las barras internas (la mecánica de un rango de precios que contiene a otro), encuentra extremos locales y ensambla segmentos direccionales a partir de ellos.
Síntesis de Timeframes Superiores y Generación de Señales
Una utilidad práctica dentro de la biblioteca es BarGenerator. Permite alimentar barras de minutos en un flujo y obtener velas sincronizadas para intervalos de 5 minutos, 30 minutos o diarios sobre la marcha:
Después de sintetizar los timeframes, puedes adjuntar señales listas para usar. Más de doscientos patrones están incluidos en el repositorio, implementados en Rust:
Visualización y Backtesting
Mirar matrices crudas de puntos es inconveniente. czsc tiene un módulo de visualización integrado basado en plotly y lightweight-charts. Genera un archivo HTML autocontenido con velas superpuestas con segmentos y puntos de entrada:
Para la verificación de estrategias, el autor extrajo los cálculos de retornos en un paquete separado llamado wbt (Weight Back Test), que es una dependencia fuerte. El modelo opera sobre cambios en los pesos del portafolio objetivo a lo largo del tiempo en lugar de órdenes discretas, lo que simplifica el escalado a una canasta de instrumentos.
Matices y Bordes Rugosos
El proyecto tiene especificidades que vale la pena conocer antes de comenzar:
- Casi toda la documentación, comentarios del código y nombres de señales están en chino. Para entender la lógica de algunas funciones, necesitarás un traductor a mano.
- Acoplamiento fuerte a fuentes de datos asiáticas (Tushare, Tianqin), aunque la disponibilidad de CCXT suaviza esto para quienes operan criptomonedas.
- La versión 1.0 rompió la compatibilidad hacia atrás con la rama 0.9. Si has trabajado con czsc antes, necesitarás reescribir tu código para la nueva API.
A Quién le Será Útil Este Proyecto
La biblioteca será útil para desarrolladores cuantitativos y traders que buscan una alternativa a indicadores clásicos como RSI o MACD. Chan Lun proporciona una formalización estricta de niveles de soporte y estructuras de tendencia, y el núcleo en Rust dentro de czsc elimina la necesidad de escribir cálculos pesados de geometría de gráficos desde cero. Para comenzar, es suficiente tener conocimientos básicos de Python y una comprensión de cómo funcionan las series temporales de precios.
Proyectos relacionados