Composer: codificare una strategia di trading non è mai stato così semplice
Il trading automatico richiede di definire delle regole ben precise. Saranno tali regole, infatti, a governare la nostra operatività, decidendo “al posto nostro” quando aprire e chiudere le posizioni a mercato; l’insieme di tali regole viene definito strategia di trading proprio per questo motivo.
Vuoi un aiuto per migliorare il tuo approccio al trading? Clicca qui >>>
Prima ancora di sfruttare una strategia per operare sui mercati, la useremo per verificare quali risultati abbia prodotto nel passato: quest’analisi, detta backtest, è una pratica importantissima, sia per correggere la strategia, che per limitare i rischi prima di operare con il nostro capitale.
Per scrivere una strategia, esistono numerosi linguaggi di programmazione (C++ o Python giusto per citare alcuni tra i più diffusi) e ciascuno di questi ci consente, a suo modo, di codificare tutte le istruzioni necessarie ad operare sul mercato. Se è vero che linguaggi come C++ o Python permettono una codifica molto flessibile, è altrettanto vero che il loro apprendimento non è per nulla semplice e richiede molto tempo.
Già nel secolo scorso, alcuni sviluppatori si erano posti questo problema e avevano creato un linguaggio – EasyLanguage (EL) – che sapesse unire all’efficacia la semplicità del suo utilizzo. Ad EasyLanguage, in tempi più recenti, se è affiancato PowerLanguage (PL): i due linguaggi sono quasi identici tra loro e vengono adottati dalle due piattaforme di trading più conosciute al mondo, rispettivamente TradeStation e MultiCharts.
Il Composer della Unger Academy
Oggi abbiamo quindi a disposizione un linguaggio – il PL – che ci permette di codificare una strategia di trading senza dover essere degli sviluppatori esperti; per tradurre le nostre idee in codice è comunque necessario apprendere questo linguaggio.
Alla Unger Academy ci siamo posti questa domanda: “Sfruttando la semplicità del PL, possiamo rendere la codifica davvero accessibile a tutti?”. Ce lo siamo chiesti perché volevamo che il linguaggio, per quanto semplice, non diventasse minimamente un ostacolo e per consentire a chiunque di poter codificare un portafoglio di strategie: è nato così il Composer.
Il Composer è un software proprietario che, sulla base delle nostre istruzioni, scrive automaticamente il codice in PL, già pronto per essere utilizzato in MultiCharts. Decidendo il set di regole della nostra strategia di trading, resteremo comunque noi al comando, ma sarà il Composer a tradurle nel codice finale.
In questo articolo, scopriremo insieme le sue potenzialità e realizzeremo una vera strategia di trading in pochi passaggi.
Impostare le regole di un trading system
Qui sotto vediamo l’interfaccia grafica del Composer e, in particolare, ci troviamo nella sezione dove poter definire le regole di ingresso che ora scorreremo una ad una.
Dopo aver impostato correttamente gli orari di inizio e fine sessione dello strumento finanziario su cui vorremo operare, potremo inserire il numero di contratti e scegliere il trigger di ingresso tra i tanti a disposizione. Ricordandoci che un trigger rappresenta quel livello che, se raggiunto, dà il via al nostro ingresso in posizione, quelli tra cui poter scegliere sono i seguenti:
Passeremo a definire la time window, ossia la finestra temporale nella quale permetteremo gli ingressi a mercato, impostando anche un’eventuale pausa operativa.
Potremo decidere se operare solo long, solo short o in entrambe le modalità.
Avremo anche la possibilità di applicare diverse liste di pattern per filtrare successivamente la strategia (questo però non farà parte della trattazione del presente articolo).
Infine, potremo anche applicare i filtri più comunemente usati in analisi tecnica, così come definire il numero massimo di ingressi per ciascuna sessione.
Qui sotto ci troviamo invece nella sezione dove poter definire le regole di uscita, principalmente:
- una chiusura temporale (a fine sessione, dopo n sessioni o senza alcun limite)
- una chiusura monetaria (al raggiungimento di una perdita o guadagno impostati)
Una volta inseriti questi parametri, il Composer genererà il codice con un semplice click del mouse.
Mettiamolo subito alla prova!
Vuoi un aiuto per migliorare il tuo approccio al trading? Clicca qui >>>
Creare una strategia da zero
Scegliamo come strumento finanziario uno dei tanti a disposizione tra i future quotati al CME: il future sulla benzina, ossia il RBOB gasoline future (RB).
Supponiamo di voler scrivere una strategia trend following che entri long o short alla rottura rispettivamente del massimo o del minimo toccati nella sessione precedente. Selezioneremo allora il trigger seguente:
Dobbiamo ora decidere gli input da inserire nel nostro Composer:
Sezione “Entry”
- l’RB apre le contrattazioni alle 18:00 (Session start time) e le termina alle 17:00 (Session end time), orari di New York
- Operiamo con 1 contratto
- Entriamo a mercato solo all’interno di una fascia oraria che eviti le prime e le ultime 2 ore della sessione, quindi dalle 20:00 (Trading start time) alle 15:00 (Trading end time) del giorno successivo, senza pause operative
- Permettiamo 1 solo ingresso per sessione e operiamo sia long che short
- Selezioniamo le liste di Pattern “PtnNeutralFast + PtnDirectionalFast”: si tratta di pattern di prezzo disegnati dalla Unger Academy e che potranno esserci utili in seguito
Sezione “Exit”
- Limitiamo la durata massima dei trade a 5 sessioni, chiudendoli al più tardi alle 15:30 dell’ultima sessione
- Inseriamo uno Stop loss di 2.000$ e un Take profit di 6.000$
Vediamo qui sotto gli input inseriti nelle rispettive sezioni:
I risultati del trading system su RB sviluppato con il Composer
Arrivati fin qua, adesso siamo curiosi di vedere i risultati della nostra strategia. Carichiamo, quindi, un chart del @RB con timeframe 30 minuti e dati a partire dal 2010 fino ad oggi e applichiamo il codice appena sfornato dal Composer, per verificare come abbia performato negli ultimi 13 anni.
L’equity sopra è senza dubbio crescente con una discreta regolarità e, anche prese singolarmente, le equity long e short mostrano buoni risultati:
Le metriche seguenti, inoltre, ci confermano la validità della strategia:
Pur non avendo modificato una sola riga del codice, abbiamo già ottenuto un ottimo sistema; possiamo però lanciare una semplice ottimizzazione dello Stop loss e del Take profit, per tentare di migliorarlo ulteriormente: ottimizziamo lo Stop loss da 1.500 $ a 2.500 $ a step 100 $ e il Take profit da 4.000 $ a 8.000 $ a step 500$, ottenendo i seguenti risultati:
Notiamo come ampliare lo Stop loss a 2.500 $ e ridurre il Take profit a 5.000$ porti un indubbio beneficio. Confrontando, infatti, le metriche con quelle precedenti, possiamo dire di aver incrementato sia il NetProfit che l’Average trade di oltre il 25%, concedendo solo un lieve aumento del Max DD.
Questa è l’equity aggiornata:
Possiamo migliorare ancora la strategia?
L’average trade è già abbastanza capiente per lo strumento utilizzato, il rapporto Max DD / NetProfit si attesta attorno al 10% e il numero di condizioni utilizzate è davvero basso, il che depone a favore della robustezza del sistema; potremmo già considerarci soddisfatti, però il sistema compie ancora molte operazioni (circa 120 all’anno) e quindi si presta bene ad essere filtrato ulteriormente con l’obiettivo di alzare l’Average trade e di minimizzare il Max DD.
Per fare questo, potremo avvalerci dei pattern: un pattern è una particolare configurazione di prezzo che possiamo richiedere che si verifichi per permettere i nostri ingressi a mercato; in altre parole, i nostri ingressi potranno avvenire solo se si sarà verificata questa specifica configurazione, filtrando di fatto una parte di tutti i nostri possibili ingressi sui livelli del trigger prescelto.
Le liste che avevamo selezionato precedentemente (“PtnNeutralFast” e “PtnDirectionalFast”) contengono decine di pattern differenti, che la Unger Academy ha disegnato appositamente per mercati come le commodity. Lanciando con MultiCharts una semplice ottimizzazione su queste due liste, potremo filtrare agevolmente i trade e massimizzare le metriche del sistema.
Come vediamo qui sotto, il Composer aveva già generato correttamente la parte di codice necessaria per poter eseguire questa ottimizzazione.
Conclusioni finali e ulteriori utilizzi del Composer
Lasciamo ai lettori il compito di affinare ulteriormente lo sviluppo di questa strategia, per rendere il sistema ancor più performante. Ci possiamo comunque ritenere molto soddisfatti: grazie al codice fornito dal Composer e dopo un semplice “fine tuning” dello Stop loss e del Take profit, abbiamo raggiunto un ottimo risultato; dopo aver filtrato il sistema con l’ausilio dei pattern, avremo in mano un sistema fatto e finito, che potrebbe essere aggiunto al portafoglio delle nostre strategie.
Oggi abbiamo visto uno dei tanti sistemi sviluppabili grazie al Composer: selezionando diversi trigger di ingresso e combinandoli con tutte le possibili time window, i diversi tipi di uscita, i filtri e le altre condizioni, possiamo ottenere un numero veramente ampio di sistemi, pronti per essere valutati attraverso MultiCharts.
In questo articolo abbiamo imparato a conoscere il Composer della Unger Academy: un potente alleato per lo sviluppo delle strategie, che consente un facile accesso al mondo del trading, anche a chi non vuole spendere tempo nello studio di linguaggi di programmazione.
Vuoi un aiuto per migliorare il tuo approccio al trading? Clicca qui >>>
Alla prossima e buon trading!
Andrea Unger