Il dubbio
Viviamo in tempi curiosi in cui veniamo bombardati da informazioni provenienti da fonti più o meno autorevoli e più o meno indipendenti. È giusto quindi, per amore di verità, provare a fare un po’ di chiarezza su quello che è il nostro pensiero su quale sia il modo migliore (se esiste) per approcciarsi al mondo del trading e dell’investing.
Il mondo open source (quello di chi si avvale unicamente, o in affiancamento alle piattaforme commerciali, di librerie libere di strumenti) anche in ambito finanziario sta ampliando il proprio bacino. La conseguenza è l’immaginabile alzata di scudi di chi è legato a modelli proprietari e difende giustamente i propri interessi. Articoli come questo ne sono la riprova.
La questione troppo spesso viene posta contrapponendo l’acquisto chiavi in mano di piattaforme multiple per fare trading ed analisi statistiche su trading system e portafogli, all’apprendimento di linguaggi di programmazione come Python. Ma le cose non stanno proprio così e qualsiasi tentativo di semplificazione, nella migliore delle ipotesi è strumentale. Proveremo a condividere il nostro punto di vista.
Ho iniziato a fare trading nei primi anni duemila, come cacciatore di penny stocks sul mercato americano, guidato da un mio caro amico, studioso e appassionato dei mercati finanziari, con cui qualche anno dopo partecipai a pubblicare un’antologia di tecniche di trading. Mi ero appena laureato in ingegneria elettronica e la fascinazione per le nuove tecnologie mi ha naturalmente guidato nelle mie scelte. All’epoca di lavorava con Metastock e con la versione 2000i di Tradestation (prodotto ben lontano da quello che è diventato oggi e da quel Multicharts che avrebbe ispirato). Anche Metastock esiste ancora oggi ed è cambiato tantissimo da allora. Tuttavia, all’epoca, permetteva di creare solo alcune delle cose che mi sarebbero servite. Le regole che potevi scrivere nelle maschere statiche erano limitate come sintassi e possibilità di richiamare le variabili. Agli esordi si trattava di un mirabile tentativo (peraltro riuscito) di individuare rapidamente dei pattern, provarli su interi basket di titoli (ad esempio) e ottenere delle prime statistiche di base. Se da una parte ricordo quei tempi con grande nostalgia (le partenze sono sempre emozionanti), mi resi conto ben presto che avevo bisogno di ampliare gli strumenti che avevo a disposizione. Da una parte la mia vicinanza con Michele Maggi e Mauro Pratelli mi spinse naturalmente verso Visual Trader (che ho avuto il piacere e l’onore di contribuire a sviluppare nella parte di trading sistematico dal 2006 al 2009); dall’altra la mia attenzione venne naturalmente attratta da Tradestation, anche grazie alle voci che mi giungevano da professionisti affermati, partiti prima di me sulla codifica di trading system, come Enrico Malverti (non sapendo che qualche anno dopo avrei tenuto corsi sul meta-linguaggio Easylanguage). Apparve subito chiaro, studiando la sintassi del codice, come Easylanguage aprisse maggiori possibilità di Metastock (per trasparenza devo aggiungere che mi sto riferendo ai prodotti dell’epoca). Era possibile caricare una serie storica e testare delle regole di compravendita con relativa semplicità (ma era richiesta già all’epoca una comprensione dell’ambiente di lavoro superiore a quello “super easy” di Metastock). Veniva scambiata un po’ di complessità in più con maggiori possibilità di analisi e quindi di comprensione degli aspetti statistici e finanziari. Un buon trade.
Quello che conta davvero
Quando nel 2005 incontrai Larry Williams, seduto tra i cappotti del guardaroba dello stand Trading Library ad uno dei primi ITF, vidi che lui utilizzava Trade Navigator e non Tradestation. Insomma lui rappresentava il trader di successo che aveva bruciato le tappe ed era riconosciuto come un riferimento assoluto in tutto il mondo. Perché non utilizzava Tradestation? In quei pochi istanti in cui eravamo da soli, non gli chiesi di indicarmi la chiave per leggere i mercati, ma cosa mi consigliasse di utilizzare per lavorare su di essi. Mi chiese che studi avessi fatto e mi rispose che, nel mio caso, non sarebbe stato importante, ma di scegliere quello che mi permettesse di avere fiducia nei miei mezzi. Un concetto che mi fu ribadito l’anno successivo da un certo John Bollinger. Sono molto grato ad entrambi.
Non capii immediatamente il messaggio e mi affannai ancora per un po’ a sondare quale fosse davvero la suite software migliore da utilizzare. Per molti di noi è la domanda di partenza che non è corretta: non bisogna chiedersi, a mio modesto parere, quale sia il modo più veloce e profittevole per avere successo sui mercati (dopo qualche anno credo di poter dire anche la mia, in mezzo a tante certezze): in primis il modo veloce, spesso è quello “troppo veloce”, quello che costerà più delusioni e denaro. Non bisogna avere fretta di mettere a mercato le proprie strategie fresche di fucina e se anche non si riesce a resistere alla tentazione di cedere a quello che io chiamo “il lato oscuro”, ossia il richiamo ludico del trading, consiglio di farlo davvero con delle briciole. Quanto devono pesare tali briciole è molto semplice da capire: che si stia lavorando in modo discrezionale o sistematico (meccanico e/o automatico), il trading non deve dare emozioni di esaltazione o paura. Se si percepiscono queste due onde emotive si sta mettendo in gioco troppo denaro. Qualcuno, con suggestioni differenti, afferma che il trading, per essere profittevole, debba essere noioso. Forse si tratta di un’iperbole, ma credo renda bene l’idea.
E allora qual è la domanda giusta da porsi?
La lezione che appresi è che gli strumenti da utilizzare per progettare, realizzare e mettere a mercato le proprie strategie, debbano essere gli unici che consentono, più degli altri, di mantenere alta e costante la fiducia in quello che si è progettato. In questo senso, se si è davvero indipendenti e onesti nel giudizio, non esiste una ricetta buona per tutti, come non esiste un trading system in grado di ottenere risultati positivi in tutte le condizioni di trend e volatilità. La chiave è la fiducia o il “trust” come dicono gli americani.
Pensateci per un momento.
Tempo fa ho letto un libro bellissimo, molto lontano, almeno nell’aspettativa, dal mio mondo: Open di Andre Agassi. Ciò che distingue un professionista del mondo del tennis da un buon giocatore, non è la tecnica, che può essere eccellente in entrambi i casi. È la capacità di tenere costante la fiducia nella propria preparazione e nel cammino percorso. Insomma, la differenza la fa saper mantenere costante e granitica la propria convinzione. E questo soprattutto nei momenti difficili, che inevitabilmente fanno parte del gioco. Nel trading è esattamente lo stesso.
Quale scelta
Partendo da questo assunto, una persona che approcci il trading con una buona preparazione tecnica, potrà beneficiare più facilmente di un maggiore approfondimento di temi e di mezzi e questo gli darà probabilmente maggiore fiducia. Vorrà essere indipendente nell’analisi codificando in autonomia i propri strumenti, almeno nella parte di ricerca. Io, ad esempio, non potrei più acquistare software fatti da terze parti per l’analisi dei dati (per fare un esempio molto limitato) e questo non ha in alcun modo a che fare con il costo di questi servizi, spesso anche di discreta qualità, perché oggi le stesse analisi si fanno con poche righe di codice open source e la loro interpretazione è immediata. Python è stato quello che è stato Tradestation rispetto al Metastock dell’epoca. Un codice di alto livello, semplice da utilizzare e da apprendere, con centinaia di librerie pronte all’uso per fare ricerca e andare a mercato. Non si tratta, come spesso dicono i male informati, di ricreare la ruota, perché oggi Python è un “lego” da combinare a piacere per fare analisi di portafoglio, creare algoritmi rotazionali o di equity e performance control, creare strategie di trading o di investing sia in intraday che in multiday e per fare analisi statistica di backtest, applicando svariati modelli di validazione (che potete realizzare da soli o che trovate pronti all’uso in molte librerie). Se a questo aggiungete la possibilità, impensabile al momento nelle suite più in voga, di ampliare il vostro orizzonte con l’applicazione del machine learning e dell’artificial intelligence in tutte le sue declinazioni, capite quanto sia ampio il cambio di passo. Certo si potrebbe uscire dal paradigma open source e abbonarsi a diversi software (solo in USA ne esistono svariati solo per aggregare i portafogli), ma la complessità impatterebbe comunque sul nostro ambiente di sviluppo, il tutto sarebbe a pagamento (poco male se non incide troppo sul nostro piano imprenditoriale) e di sicuro sarebbe meno flessibile. Penso alle volte che in passato ho chiesto agli sviluppatori di Multicharts di aggiungere delle funzionalità che mi sarebbero servite con una certa urgenza e che giustamente non sono state accolte. Una software house generalista deve fare dei compromessi e puntare sulle esigenze della maggioranza. Tutto vero, ma esiste il rovescio della medaglia.
Una persona con una preparazione di base meno approfondita o proveniente da studi umanistici, ad esempio, potrebbe, faccio un’ipotesi che non vuole in alcun modo essere esaustiva, trovarsi più a suo agio con il Metastock di turno. Un ambiente più limitato, ma solido, che punta ad un sottoinsieme di possibilità e le rende fruibili in modo più rapido. Questa tipologia di utente potrebbe non essere avvezza a scrivere linee di codice e preferire un approccio “da utilizzatore”. Multicharts o Tradestation oggi rispondono a questa tipologia di utenza e personalmente ritengo si tratti della miglior soluzione di compromesso (esistono delle alternative come Amibroker o l’ecosistema Metatrader, solo per citarne alcune, ma alla prova dei fatti risultano più complesse e meno duttili). E qui nasce un secondo fraintendimento.
Perché Python è diverso
R e Matlab e persino C++ o C# vengono spesso paragonati a Python (da chi non conosce bene Python evidentemente) e sono sicuro verrà fatto in futuro anche con Julia. R è l’ambiente di programmazione principe del mondo statistico, è open source ma è decisamente più complesso e rigido di Python. Matlab, che ho utilizzato per anni all’università insieme a Wolfram Mathematica, è diventata una suite a pagamento completamente ridisegnata di un’azienda privata. La potenza concettuale dell’open source è che esiste una community che sostiene il progetto e che non è legata ad una azienda che potrebbe fallire e lasciarci a metà del guado. Sì perché investire in formazione va benissimo (ne parliamo tra poco), ma sarebbe preferibile che lo sforzo fatto, sia in termini di tempo che di denaro, fosse rivolto il più possibile verso strumenti che non vivano e muoiano dentro suite su cui non abbiamo il controllo. Cosa accadrebbe se dovesse chiudere Tradestation? Sento già rispondere “lo stesso che accadrà quando Python uscirà di scena”, ma purtroppo le cose sono molto diverse. Conoscere Python permetterà di passare rapidamente da un linguaggio all’altro.
Apprendere Python significa apprendere ad “alto livello” (inteso in senso informatico) cosa significhi programmare un codice: dalle fondamenta della sintassi, fino alle architetture del paradigma ad oggetti o procedurale. Una volta fatto questo sforzo iniziale, impegnativo si, ma necessario se volete programmare in un qualsiasi linguaggio, diventerete padroni dei pilastri del coding. Come si traduce questo in termini pratici:
Python vi aiuta a scrivere anche codice Easylanguage in modo più consapevole e se fate trading avere una maggiore comprensione dei passaggi che il codice automatizza può fare una grande differenza in termini di errori evitati sul campo.
Fare trading sistematico significa saper gestire complessità
Chi racconta la favoletta che fare trading sia per tutti e che sia semplice, o mente sapendo di mentire o è in conflitto di interessi. Questa è la mia opinione fatta sul campo da quando ho perduto i primi soldi sul mercato ed è giusto essere chiari.
Che si possa operare con un’idea semplice è un conto (non a caso anche il trading genetico, che mi vede impegnato da almeno quindici anni, nella maggioranza dei casi, beneficia di poche regole grezze che hanno lo scopo di lenire l’overfitting, che inevitabilmente qualsiasi sistema si porta dietro come un peccato originale). Altro conto è raccontare che progettare tale sistema semplice, arrivi dalla lampada di Aladino: il lavoro di analisi, di validazione e di messa in opera, con un’infrastruttura da conoscere in modo ossessivo, è tutt’altro che semplice. E ignorare questa complessità costa denaro. Molto meglio, a quel punto, operare in modo discrezionale con ordini manuali.
Potremmo scrivere un intero articolo per disquisire se l’utilizzo di maggiori strumenti si traduca in migliori performance sul campo. La relazione non è di correlazione diretta e di sicuro non è lineare. Questo dimostra diverse cose:
1. Non tutti possono fare trading (non è un giudizio di merito) ed una sbagliata aspettativa costa più di una scelta errata degli strumenti.
2. Se anche qualcuno ha dimostrato sul campo di essere bravo a fare trading non è detto che sia in grado di trasmetterlo ad altri esseri umani. Quello che può fare è solo condividere la tecnica, ciò che accadrà dopo esula dal suo controllo. Quindi sarebbe onesto dirlo.
3. Come ho detto all’inizio, l’elemento distintivo che in alcuni casi può portare al successo, è la fiducia in quello che si è realizzato e la perseveranza con cui si riesce a sostenere tale fiducia. Difficile commisurare tale elemento soltanto verificando quali strumenti si utilizzino.
A questo va aggiunto che la fortuna gioca un ruolo dominante nel breve periodo, ma costa cara sul medio lungo termine. E per abbattere questo elemento sui mercati finanziari (annullarlo è impossibile) abbiamo la statistica, da una parte, e i modelli previsionali dall’altra.
Apprendere Python non obbliga ad utilizzare Python, in modo ideologico, per tutti gli aspetti della filiera. Misurandoci con tanti utenti, che hanno scelto il nostro acceleratore didattico, è emerso in modo abbastanza chiaro come soltanto una percentuale del 40% abbia scelto di andare a mercato con Python, utilizzando i bridge verso le API dei vari broker (tale percentuale passa ad oltre il 90% di chi operi sul mercato delle cryptocurrencies). L’indicazione è chiara: dato che l’80% dei nostri corsisti proviene dal mondo Easylanguage-Powerlanguage e ha a disposizione o Tradestation o Multicharts, preferisce svolgere tutta la catena di sviluppo su Python (indubbiamente più semplice, comodo e potente) e poi traduce la versione finale in Easylanguage-Powerlanguage (grazie alle competenze apprese) e va a mercato in quel modo. Un bell’esempio virtuoso di flessibilità e di gestione della complessità.
Aggiungo che quando si parla di Python si fa molta confusione: ci si riferisce incondizionatamente al linguaggio di programmazione, come se ogni volta fosse necessario riscrivere tutto da zero per ogni singola attività. Si dimentica che è possibile utilizzare Python in modo modulare o “da utilizzatore”, esattamente come accade con Easylanguage. Esistono decine di librerie finanziarie per fare analisi e per andare a mercato agevolmente.
Qualche esempio in ordine sparso (non basterebbe un libro per contenerle tutte):
– FinTA
– TALib
– PyAlgoTrade
– ZipLine (la costola viva e vegeta di Quantopian)
– PyBackTest
– Backtrader
– FreqTrade
– IbInsync
– IbPy
– iBridgePy
– CCXT
– TensorTrade
– PyFolio
– Empyrical
– Finance
– VisualPortfolio
– ARCH
– StatModels
– Dynts
Senza citare lo stato dell’arte delle librerie di Machine Learning come Keras, TensorFlow, SkLearn. Un dettaglio: è tutto documentato, semplice e pronto per essere utilizzato e, ultimo ma non meno importante, è completamente gratis.
Poi potremmo parlare della tanto ostentata stabilità delle piattaforme commerciali. Potrei raccontarvi di enormi problemi di instabilità di comunicazione, fallace gestione degli eventi di comunicazione tra broker e piattaforma con Tradestation (soprattutto su alcune versioni) e Multicharts (decisamente meglio da questo punto di vista, ma ci sono altre pecche).
Ora dovrebbe essere chiaro il mio pensiero: ognuno, per iniziare, deve avere la possibilità di scegliere il cammino che preferisce e ciò sarà legato alla sua probabilità di successo in modo imprevedibile rispetto alla scelta di Python o di una suite a pagamento come Multicharts e tool accessori. Quello che conta è che la scelta sia in linea con la propria capacità di sostenere la fiducia in quello che produrrà e renderà operativo. Questo si che è semplice, almeno da un punto di vista concettuale.
Se si è un hedge fund quantitativo, di sicuro la scelta ricadrà su architetture proprietarie scritte con linguaggi di programmazione “veri”. Sono troppi gli elementi che vanno personalizzati e messi in sicurezza (e nemmeno Multicharts potrebbe garantire gli standard richiesti dalle Autority). Oggi Python è utilizzato in tutta l’industria finanziaria degli hedge, per la parte di R&D, ma anche come elemento di reportistica e di gestione della filiera di sviluppo. L’HFT poi scala verso C o C++, ma ad alto livello i bridge sono garantiti dalla leggibilità di Python.
In cosa si traduce questa informazione? Quando qualche ragazzo giovane mi chiede su cosa investire in ambito formativo, io non ho dubbi: impara Python – gli dico – e poi vai avanti da lì, ovunque ti porti. Che sia trading personale o una posizione di analista quantitativo, finanche a quella di CIO di un fondo. È tempo speso bene comunque, sia che tu intenda amministrare i soldi di famiglia, che se tu stia puntando ad una posizione in una grande azienda di settore. Comunque ti porterai a casa una competenza rivendibile anche sul mondo del lavoro.
Non ci credete? Provare a dare uno sguardo ai bandi di HSBC, Mizuho, Goldman Sachs, piuttosto che di JPM o di qualche Defi Fund. Il futuro oggi parla Python.
Perché potete crederci
Chiudiamo con una considerazione di carattere più squisitamente di opportunità. Se le mie parole non sono riuscite a convincervi che l’unica regola è che non esistano regole giuste per tutti, allora provo a darvi una chiave di lettura differente. Ho creato la Gandalf Project ormai dieci anni fa e da dieci anni propongo degli acceleratori didattici sia sul mondo Easylanguage-Powerlanguage che su Python. Prima ancora ricordo il percorso “Trading System Academy” coniato su Visual Trader ed il futuro prossimo vede la commistione di Python e Julia nella “Machine Learning Academy”. Quindi, svolgendo attività didattica sul coding nei due mondi, potete credere che non abbiamo interessi a spostare l’attenzione da un mondo all’altro. Se questo non basta, aggiungo che da sempre forniamo le chiavi per fare tutto da soli, in autonomia di mezzi e di contenuti. Esistono infatti miriadi di video, articoli e di materiale gratuito da cui è possibile partire per crearsi un percorso didattico personalizzato, sia in ambito piattaforme commerciali che coding open source. E dato che preferiamo andare sempre alla fonte diretta delle informazioni, ecco alcune sorgenti gratuite che vi invitiamo a visionare:
Tradestation (Ambiente software che utilizza il metacodice Easylangage):
– per accedere e iniziare a muoversi nell’ambiente Tradestation: https://www.youtube.com/channel/UCkgawWP6JCrYhTARr8dXoIw
– Il primo manuale Easylanguage di 143 pagine completamente gratuito: https://uploads.tradestation.com/uploads/EasyLanguage-Essentials.pdf
– La documentazione per collegarsi all’API Tradestation: https://tradestation.github.io/api-docs/
Multicharts (Ambiente software che utilizza il metacodice Powerlanguage):
– Il primo manuale Multicharts di 494 pagine, una vera e propria miniera di informazioni: https://www.multicharts.com/trading-software/images/8/8c/MultiCharts_User_Manual.pdf
– Video tutorial Multicharts su molti apsetti fondamentali: https://www.multicharts.com/tutorials/
Python (linguaggio di programmazione):
– Interprete Python da scaricare sul proprio computer da utilizzare in pochi minuti grazie ai tanti tutorial gratuiti: https://www.python.org/
– Testi di tutti i livelli: https://wiki.python.org/moin/PythonBooks
Oltre tutto questo inizia il mondo della formazione a pagamento sia sulle suite a pagamento, sia su Python ed altri linguaggi. Ci sono molte buone proposte, sia in italiano che in inglese e lasciamo a voi ogni decisione in merito.
Se sceglierete di iniziare dalle piattaforme commerciali, perché vi fa paura approcciarvi con qualcosa di più generale che è di sicuro più spinto lato coding, va benissimo e magari sarà la scelta giusta per voi. Se al contrario siete più confidenti con un linguaggio vero come Python, allora partita da li. Se la scelta è consapevole non ve ne pentirete in entrambi i casi.
Ma sia Easylanguage sia Python non sono per tutti. Il trading non è per tutti. Questa è la cruda realtà.
Tutto ciò che abbiamo scritto non è “la verità assoluta” ed era impossibile, per amor del vero, astrarre completamente il proprio giudizio personale che, comunque, credo sia ben evidente tra le righe. Ma non vogliamo essere cattivi maestri indicando strade in cui non crediamo e abbiamo voluto fare un po’ di chiarezza.
Fare trading è un mestiere difficile, articolato, insidioso, costoso e che richiede una copertura finanziaria non indifferente. Le cose, partendo con poca preparazione, possono anche andar bene per un po’, ma prima o poi arriva il conto da pagare e i facili entusiasmi dell’inizio possono spegnersi in modo brusco. Costruire quella solidità mentale, di cui parlavamo precedentemente, deve essere l’unico vero obiettivo. Quindi, se siete alle prime armi, perdete tempo, girate a vuoto, fatevi un’idea schivando le sirene che troverete lungo la strada. Partite da ciò che è gratuito e fatevi un’idea vostra, nessuno potrà mai garantirvi di potervi trasformare in trader di successo. E potrebbe non essere quello il vostro vero obiettivo. Fare esperienza in una società di asset management o lavorare in un HFT di Wall Street potrebbe portarvi soddisfazioni anche superiori. Se nonostante tutto è il trading proprietario che vi attrae, cercate di capire se siete abbastanza bravi e portati, frequentate qualche corso a pagamento, ma selezionatelo con cura, cercando voi i vostri maestri e non viceversa. Investite il vostro tempo ed il vostro denaro seguendo la vostra passione, senza preconcetti. Di più non posso dirvi.
Buon trading
Giovanni Trombetta
Founder – Head of R&D
Gandalf Project
AVVERTENZE: I contenuti di questo articolo (e degli altri contenuti in questo sito) e le opinioni espresse non devono in nessun caso essere considerati come un invito all’investimento.
Le analisi non costituiscono mai una sollecitazione all’acquisto o alla vendita di qualsivoglia strumento finanziario. Queste note hanno per oggetto analisi finanziarie e ricerca in materia di investimento. Qualora vengano espresse delle raccomandazioni, queste hanno carattere generale, sono rivolte ad un pubblico indistinto e mancano dell’elemento della personalizzazione.
Sebbene frutto di approfondite analisi, le informazioni contenute in questo e negli altri articoli possono contenere errori. Gli autori non possono in nessun caso essere ritenuti responsabili per eventuali scelte effettuate dai lettori sulla base di tali informazioni erronee. Chi decide di porre in essere una qualsiasi operazione finanziaria sulla base delle informazioni contenute nel sito lo fa assumendone la totale responsabilità.
DISCLAIMER: The contents of these notes and the opinions expressed should in no case be considered as an invitation to invest. The analyzes never constitute a solicitation to buy or sell any financial instrument.
These notes relate to financial analysis and investment research. If recommendations are made, these are of a general nature, are aimed at an indistinct audience and lack the element of personalization.
Although the result of in-depth analysis, the information contained in these notes may contain errors. The authors cannot under any circumstances be held responsible for any choices made by readers on the basis of such erroneous information. Anyone who decides to carry out any financial transaction on the basis of the information contained in the site does so assuming full responsibility.
Condivido forma (sobria) e sostanza (precisione e onesta’ intelletuale) dell’articolo.
Davide Pandini