Como uma Teoria Chinesa de Análise de Ações Migrou para Rust
No trading algorítmico asiático, existe um conceito popular de análise técnica chamado Chan Lun (Chan Lun, ou a teoria 'Chan Zhong Shuo Chan'). Abstraindo a filosofia sobre Zen e sabedoria oriental, em seu núcleo é um modelo geométrico estrito de decomposição fractal de gráficos de preços em padrões: picos, vales, segmentos e as chamadas zonas de consolidação central.
A biblioteca czsc trouxe esses algoritmos para o código. O projeto foi originalmente escrito em Python puro, mas quando se tratou de iterar através de dados de ticks e processar centenas de sinais em tempo real, o interpretador não conseguia acompanhar. Na branch 1.0, os autores reescreveram todo o núcleo matemático em Rust, mantendo as bindings Python familiares por fora via PyO3.
Vamos detalhar como esta ferramenta funciona e por que é interessante além do mercado chinês.
Por Trás dos Panos
A arquitetura do projeto é claramente dividida em duas camadas: uma camada computacional rápida em Rust e uma interface de usuário em Python.
A camada Rust (czsc._native)进行处理繁重的工作:
- Estruturas de dados básicas e mesclagem de barras em timeframes superiores
- Reconhecimento de padrões geométricos para a teoria Chan (fractais
FX, segmentosBI, zonasZS) - Uma biblioteca de mais de 220 funções de sinais prontas para uso
- Indicadores técnicos (SMA, EMA, Bandas de Bollinger)
A camada Python organiza os fluxos de trabalho:
- Conectores para fontes de dados como Tushare, TQSdk e exchanges de criptomoedas via CCXT
- Construção de estratégias e composição de eventos de trading
- Geração de relatórios HTML autônomos com gráficos interativos
Esta abordagem oferece um bom ganho de velocidade: analisar dezenas de milhares de candles e gerar sinais acontece sem os atrasos típicos do Python.
Início Rápido
É necessário Python 3.10 ou superior. Se instalar do PyPI, um compilador Rust não é necessário, já que o autor constrói pacotes wheel pré-fabricados para plataformas populares:
Se construir a partir do código-fonte, você precisará de um cargo recente e do utilitário maturin:
Trabalhando com Gráficos e Reconhecimento de Padrões
A biblioteca aceita cotações como um pandas.DataFrame padrão, então os converte para estruturas RawBar e calcula a geometria do movimento de preços:
O objeto CZSC filtra automaticamente barras internas (a mecânica de um intervalo de preços englobando outro), encontra extremos locais e monta segmentos direcionais a partir deles.
Síntese de Timeframes Superiores e Geração de Sinais
Um utilitário útil dentro da biblioteca é BarGenerator. Ele permite alimentar barras de minutos em um fluxo e obter candles sincronizados para intervalos de 5 minutos, 30 minutos ou diários em tempo real:
Após sintetizar os timeframes, você pode anexar sinais prontos. Mais de duzentos padrões estão incluídos no repositório, implementados em Rust:
Visualização e Backtesting
Olhar para arrays brutos de pontos é inconveniente. czsc tem um módulo de visualização integrado baseado em plotly e lightweight-charts. Ele gera um arquivo HTML autocontido com candles sobrepostos com segmentos e pontos de entrada:
Para verificação de estratégias, o autor extraiu os cálculos de retornos para um pacote separado chamado wbt (Weight Back Test), que é uma dependência rígida. O modelo opera em mudanças nos pesos do portfólio-alvo ao longo do tempo em vez de ordens discretas, o que simplifica o dimensionamento para uma cesta de instrumentos.
Nuances e Imperfeições
O projeto tem especificidades que vale a pena conhecer antes de começar:
- Quase toda a documentação, comentários de código e nomes de sinais estão em chinês. Para entender a lógica de algumas funções, você precisará de um tradutor à mão.
- Acoplamento forte com fontes de dados asiáticas (Tushare, Tianqin), embora a disponibilidade do CCXT amenize isso para quem opera criptomoedas.
- A versão 1.0 quebrou a compatibilidade com a branch 0.9. Se você trabalhou com czsc antes, precisará reescrever seu código para a nova API.
Quem Encontrará Este Projeto Útil
A biblioteca será útil para desenvolvedores quant e traders que buscam uma alternativa aos indicadores clássicos como RSI ou MACD. Chan Lun fornece formalização estrita de níveis de suporte e estruturas de tendência, e o núcleo Rust dentro do czsc elimina a necessidade de escrever cálculos pesados de geometria de gráficos do zero. Para começar, conhecimento básico de Python e compreensão de como séries temporais de preços funcionam é suficiente.
Projetos relacionados