>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Rust

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, segmenti BI, zone ZS)
  • 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