Come una Teoria Cinese di Analisi Azionaria è Migrata a Rust
Nel trading algoritmico asiatico, esiste un popolare concetto di analisi tecnica chiamato Chan Lun (Chan Lun, o la teoria del 'Chan Zhong Shuo Chan'). Eliminando il rivestimento filosofico su Zen e saggezza orientale, nel suo nucleo è un modello geometrico rigoroso di decomposizione frattale dei grafici dei prezzi in pattern: massimi, minimi, segmenti e le cosiddette zone di consolidamento centrale.
La libreria czsc ha portato questi algoritmi nel codice. Il progetto è stato originariamente scritto in Python puro, ma quando si è trattato di iterare attraverso dati tick e gestire centinaia di segnali in tempo reale, l'interprete non riusciva a stare al passo. Nel branch 1.0, gli autori hanno riscritto l'intero nucleo matematico in Rust, lasciando all'esterno i familiari binding Python tramite PyO3.
Analizziamo come funziona questo strumento e perché è interessante al di là del mercato cinese.
Sotto il cofano
L'architettura del progetto è chiaramente suddivisa in due livelli: un livello computazionale veloce in Rust e un'interfaccia utente in Python.
Il livello Rust (czsc._native) gestisce il lavoro pesante:
- Strutture dati di base e fusione di barre in timeframe superiori
- Riconoscimento di pattern geometrici per la teoria Chan (frattali
FX, segmentiBI, zoneZS) - Una libreria di oltre 220 funzioni di segnale pronte all'uso
- Indicatori tecnici (SMA, EMA, Bande di Bollinger)
Il livello Python organizza i flussi di lavoro:
- Connettori a fonti di dati come Tushare, TQSdk e exchange di criptovalute tramite CCXT
- Costruzione di strategie e composizione di eventi di trading
- Generazione di report HTML autonomi con grafici interattivi
Questo approccio offre un buon incremento di velocità: il parsing di decine di migliaia di candele e la generazione di segnali avviene senza i tipici ritardi di Python.
Avvio rapido
È richiesto Python 3.10 o superiore. Se si installa da PyPI, non è necessario un compilatore Rust poiché l'autore crea pacchetti wheel precompilati per le piattaforme più diffuse:
Se si compila dal codice sorgente, sarà necessaria una versione recente di cargo e l'utility maturin:
Lavorare con i grafici e il riconoscimento dei pattern
La libreria accetta quotazioni come standard pandas.DataFrame, poi le converte in strutture RawBar e calcola la geometria del movimento dei prezzi:
L'oggetto CZSC filtra automaticamente le barre interne (il meccanismo di un intervallo di prezzo che ne contiene un altro), trova gli estremi locali e assembla i segmenti direzionali da essi.
Sintesi di timeframe superiori e generazione di segnali
Una utility utile all'interno della libreria è BarGenerator. Permette di inserire barre minute in uno stream e ottenere candele sincronizzate per intervalli di 5 minuti, 30 minuti o giornalieri al volo:
Dopo la sintesi dei timeframe, è possibile allegare segnali pronti all'uso. Oltre duecento pattern sono incorporati nel repository, implementati in Rust:
Visualizzazione e backtesting
Guardare array grezzi di punti è scomodo. czsc ha un modulo di visualizzazione integrato basato su plotly e lightweight-charts. Genera un file HTML autonomo con candele sovrrapposte a segmenti e punti di ingresso:
Per la verifica delle strategie, l'autore ha estratto i calcoli dei rendimenti in un pacchetto separato chiamato wbt (Weight Back Test), che è una dipendenza hard. Il modello opera sui cambiamenti nei pesi del portafoglio target nel tempo piuttosto che sugli ordini discreti, il che semplifica il ridimensionamento a un paniere di strumenti.
Sfumature e imperfezioni
Il progetto ha delle specificità che vale la pena conoscere prima di iniziare:
- Quasi tutta la documentazione, i commenti del codice e i nomi dei segnali sono in cinese. Per capire la logica di alcune funzioni, avrai bisogno di un traduttore a portata di mano.
- Forte accoppiamento con fonti di dati asiatiche (Tushare, Tianqin), sebbene la disponibilità di CCXT attenui questo problema per chi fa trading di criptovalute.
- La versione 1.0 ha rotto la compatibilità con il branch 0.9. Se hai lavorato con czsc prima, dovrai riscrivere il tuo codice per la nuova API.
A chi sarà utile questo progetto
La libreria sarà utile per sviluppatori quant e trader che cercano un'alternativa agli indicatori classici come RSI o MACD. Chan Lun fornisce una formalizzazione rigorosa dei livelli di supporto e delle strutture di trend, e il nucleo Rust all'interno di czsc elimina la necessità di scrivere da zero calcoli pesanti di geometria dei grafici. Per iniziare, sono sufficienti una conoscenza base di Python e una comprensione di come funzionano le serie temporali dei prezzi.
Progetti correlati