Costruire un trading system: le basi

Negli ultimi anni investitori e trader professionisti hanno fatto
conoscenza col mondo dei trading systems: sistemi automatici cui vengono
delegate le decisioni operative al fine di deresponsabilizzare il proprio
ego e poter testare nel passato la validità statistica della strategia.

Sebbene, grazie a queste proprietà, i trading systems permettano di
gestire con facilità grandi masse monetarie e si siano diffusi presso
gestori di fondi hedge d’oltreoceano, esistono aspetti che ne limitano
l’impiego da parte dei più.

Il principale ostacolo incontrato dalla maggioranza dei trader è il fatto
di non sapere programmare. Ma la programmazione in Easy Language di
TradeStation, il software più diffuso al mondo, è cosa tutt’altro che
complicata. Io sono stato agevolato nel mio apprendistato da studi
ingegneristici nella prima parte della mia vita accademica, ma posso
garantire che per ottenere buoni trading systems non è assolutamente
necessario possedere chissà quali capacità di programmazione e realizzare
codici complicatissimi di pagine e pagine; è più importante l’idea
sottostante e un corretto studio e valutazione delle statistiche in fase
di progettazione e testing.

Il linguaggio Easy Language si può considerare un linguaggio
Pascal-like, assai simile a uno dei più diffusi linguaggi di
programmazione, molto semplice e intuitivo anche per i neofiti (anzi
talmente semplice che, spesso, chi ha avuto trascorsi come programmatore
ed è abituato ad altri linguaggi vi individua parecchi limiti).

La sintassi si compone di operatori relazionali e matematici con
l’inserimento di parole inglesi a comporre frasi di facile lettura. Con
poche eccezioni le istruzioni seguono il seguente schema:

If <condizione> Then <Istruzione> (se si verifica una
determinata condizione allora farò una determinata operazione). La logica
ricalca esattamente il pensiero umano e il nostro modo di ragionare che
scaturisce dall’osservazione delle barre.

Il listato viene riletto ed eseguito dal software nell’istante che
intercorre tra la chiusura di ciascuna barra e l’apertura di quella
successiva (momento in cui vengono generati gli ordini).

Il linguaggio Visual Trader elaborato da TraderLink, pur con una sua
sintassi originale, non presenta differenze d’impostazione sostanziali
rispetto a Easy Language di Omega Research.

Se volessimo ad esempio codificare una strategia basata sul cross di due
medie mobili esponenziali calcolate sulle chiusure, una veloce a 9 periodi
ed una lenta a 21 così scriveremmo in EL:

{caso long:}

If Xaverage(C, 9) crosses over Xaverage(C, 21) Then Buy at market;

{se la media esponenziale veloce supera la media esponenziale lenta allora
compra a mercato}

{caso short:}

If Xaverage(C, 9) crosses under Xaverage(C, 21) Then Sell at market;

{se la media esponenziale veloce scende sotto la media esponenziale lenta
allora compra a mercato}

Tutto ciò che viene racchiuso all’interno delle parentesi graffe non viene
letto dal programma, vi si possono quindi inserire commenti e spiegazioni
utili alla comprensione dei passaggi cruciali del codice.

In Visual Trader invece le istruzioni si codificano come:

Var: Veloce(0), lenta(0);

veloce = Mov(C, 9, E);

lenta = Mov(C, 21, E);

// Ingresso long

If crossover(veloce, lenta) Then Enterlong(nextbar, atOpen);

Endif;

// Ingresso short

If crossunder(veloce, lenta) Then Entershort(nextbar, atOpen);

Endif;

L’ingresso in open ha l’analogo significato dell’ingresso at market (a
mercato).

In questo caso la doppia barra trasversale ha la stessa funzione delle
parentesi graffe in EL. Ciascun if deve essere “chiuso” da un
endif.

In entrambi i programmi il punto e virgola deve seguire ciascuna
istruzione.

Con queste poche righe otteniamo un trading system stop and reverse
che una volta in posizione ne esce solo quando si verifica una condizione
uguale e contraria aprendo contemporaneamente una posizione di segno
opposto. Questo tipo di trading system ha una utilità esclusivamente
didattica, o al limite, d’analisi, ma non è di immediata applicazione
pratica per l’attività di trading. Questo perché un sistema che è sempre
sul mercato ci espone a rischi notevoli (il rapporto rischio/rendimento è
basso rispetto a sistemi con money and risk management) e
contemporaneamente si presta a generare notevoli difficoltà psicologiche
nell’utente che ne segue i segnali, sia per i numerosi falsi segnali nelle
fasi laterali, sia perché spesso capiterà di trasformare guadagni in
perdita, sia perché ci troveremo ad operare senza stop loss e quindi con
notevoli disagi emotivi (i sistemi stop and riverse hanno quasi sempre
drawdown, ossia fasi di perdita, pesantissime in termini monetari).

Si renderà quindi necessaria l’applicazione di un risk management, ossia
di una serie di regole (stop loss, trailing stop e/o target) in grado di
limitare il rischio e che ci aiutino a tagliare le perdite lasciando, al
contempo, correre i profitti il più a lungo possibile.

La programmazione di qualunque strategia di trading deve, infatti, seguire
il seguente schema logico:

1 – Dichiarazione delle variabili (e/o input).

2 – Assegnazione delle variabili.

3 – Entrate.

4 – Uscite.