Monday, August 31, 2015

Crystal Ball

Cultura Generale
by Marcello Belguardi

Dr. Howard Bandy* e' uno degli autori indipendenti piu' noti, autorevoli e preparati nel campo dei trading systems.
Ed e' uno dei miei autori preferiti.

Ho trovato questa serie di sue osservazioni frutto di una sua conversazione molto interessanti, rilevanti per chi fa trading sistematico.

Nel trading, come noto, tutto è probabile, non troppo certo e, spesso, difficilmente generalizzabile e dimostrabileper sua stessa natura.
Ciò nonostante Dr. Bandy è sempre molto sicuro delle sue teorie, come vedremo.

Ma il suo e' (per fortuna) un approccio scientifico e, di solito i sui scritti, qualunque sia l'argomento, hanno questo stile.

Segue la versione inglese originale e un tentativo di traduzione mia in italiano, per chi preferisce;

Trading removes inefficiencies.

Il trading elimina le inefficienze.

Trading opportunities are inefficiencies in price.  Trading systems are designed to identify patterns that precede profitable trading opportunities. If the markets ever are truly efficient, no trading system will be profitable over periods exceeding a few trades. Trading a profitable system definitely removes a portion of the inefficiency the model portion of that system identifies.  

Le opportunità di trading sono nelle inefficienze dei prezzi. I trading system sono progettati per identificare patterns che precedono opportunità di trading profittevoli. Se i mercati fossero davvero efficienti nessun trading system sarebbe profittevole oltre periodi che eccedono alcuni trades. Tradandolo, un trading system profittevole sicuramente rimuove una porzione delle inefficienze che il modello del sistema identifica.

All profitable trades are trend following.  The price at the sell must be higher than the price at the buy, without regard to the order of those transactions.  And without regard for the pattern that signaled the trade -- break out, mean reversion, seasonality, whatever.

Tutti i trade profittevoli sono trend following. Il prezzo alla vendita deve essere più alto del prezzo in acquisto, non importa l'ordine delle transazioni. E non importa quale sia il pattern che ha segnalato il trade (breakout, mean reversion, stagionalità, qualunque cosa).

Imagine a reliable wizard who has a crystal ball that identifies profitable trades before they begin. She has determined that a trend that is about to start, with the price rising from the entry point at $50 (where the price has been for the past several months) to the exit point at $60.  The trend will last a few days -- however many are required for the price to rise to $60 -- then the price will stabilize at $60 indefinitely.  This is the action expected as the price changes to reflect some fundamental value in the underlying company.  When the wizard announces the signal on her blog, traders being taking long positions.  The first buyers get the best price and remove the lowest priced shares from the offer book.  Later buyers must bid higher to get filled, they pay more.  After a week or so the price stabilizes at $60 and traders close their positions.

Immaginate che ci esista un mago attendibile che ha una sfera di cristallo capace di identificare i trades profittevoli prima che inizino. Il mago, ad esempio, riconosce che un trend sta per iniziare, prevedendo l'aumento del prezzo dal punto di ingresso a  50$ (dove il prezzo è rimasto per il passato parecchi mesi), fino al punto di uscita a 60$. Il trend durerà un paio di giorni - ma molti scambi sono necessari affinche'  il prezzo salga a 60$. Dopodiche' il prezzo si stabilizzera' a 60$ per un tempo indeterminato. Questo è l'effetto che ci si aspetta, in quanto le variazioni di prezzo in qualche modo riflettono il valore fondamentale della società sottostante. Quando il mago annuncia il segnale sul suo blog, i traders entrano sul mercato con le loro posizioni long. I primi compratori spuntano i migliori prezzi e rimuovoni le azioni a prezzo piu' basso dall book. I buyer che arrivano piu' tardi  devono fare un'offerta superiore per essere serviti, essi pagano di più. Dopo una settimana o giù di lì il prezzo si stabilizza a 60$ ed i traders chiudono le loro posizioni.

A few traders become very good friends with the wizard.  In a few months, she identifies a new signal.  Her new friends take all of the available shares and the price moves from $50 to $60 quickly, removing the inefficiency.
We are all culturing our own wizards.  We are all looking for patterns that precede profitable price movement.  If I develop or discover a profitable trading system, every trade I make removes a portion of the inefficiency.  My account is small and my trades are insignificant.  But if a high volume trader somehow identifies that same pattern as preceding a profitable price change, their trade removes a larger portion of the inefficiency.  It will be traded in large size and make it more difficult for my trade to be profitable.  Eventually my trade, based on that signal, will not cover frictional costs, and the inefficiency will have disappeared. 
It will probably never return.  Because the large trading house has coded the pattern into their trading program and they continue to evaluate the signals and their profitability.  If that pattern shows signs of returning to profitability, they begin trading it, and the inefficiency is removed before I see it.

Alcuni traders diventano molto amici del mago. Dopo pochi mesi, egli identifica un nuovo segnale. I suoi nuovi amici comprano tutte le azioni disponibili e il prezzo si muove da 50$ a 60$ rapidamente, eliminando l'inefficienza.
(Noi traders) facciamo crescere i nostri stessi maghi. Siamo tutti alla ricerca di modelli che precedano un movimento dei prezzi profittevole. Se io sviluppo o scopro un trading system profittevole, ogni trade che faccio rimuove una porzione dell'inefficienza. Il mio account è piccolo e miei trades sono insignificanti. Ma se un trader che opera con grandi volumi in qualche modo identifica lo stesso pattern che precede un variazione del prezzo profittevole, il suo trade elimina una porzione più grande della inefficienza. Saranno le grandi dimensioni del trade a rendere più difficile la reddittivita' del mio trade. Alla fine il mio trade, sulla base di quel segnale, non coprira' i costi , e l'inefficienza scomparira'.
Probabilmente non tornera' più. Perché la grande trading house avra' codificato il pattern nel loro sistema di trading e continuera'  a valutare i segnali e la loro redditività. Se quel pattern  mostrera' segni di ritorno alla redditività, essi ricominceranno nuovamente a tradarlo, e l'inefficienza verra' rimosso prima che io me ne accorga.

Howard Bandy


*Alcuni riferimenti ai suoi libri:
http://www.blueowlpress.com/


Thursday, August 13, 2015

SuperSmoother (road-tested)

Analisi Tecnica
by Marcello Belguardi

John Ehlers, il noto analista ed ingegnere americano, suggerisce di utilizzare il suo SuperSmooher filter al posto di qualunque altra media mobile perchè, avverte, a parità di smoothing ha un lag minore rispetto a tutte le altre medie.
Indica inoltre di utilizzare un periodo sempre superiore a 10 barre per evitare i problemi di aliasing che introdurrebbero elementi di distorsione tipici del campionamento dei segnali.

Ho voluto confrontare la sua media con le comuni altre disponibili su ProRealtime, partendo dalla più comune, la media mobile aritmetica SMA.

Notare che la piattaforma offre una dialog dove è possibile selezionare il tipo di media che ci interessa e molti altri parametri.  Basta selezionare da "Add Indicator" e tra gli indicatori scegliere la "Moving Average", che è quindi configurabile per tracciare molte differenti medie.




Le medie mobili, intese come filtri e per questo tipo di applicazione, devono essere molto liscie per evitare i falsi segnali e avere un ritardo minimo.

Ehlers nei suoi libri fa  l'analisi nel dominio delle frequenze osservandone la risposta in frequenza, come giusto fare per analizzare un qualunque filtro.

Comparare le medie sovrapponendole ed osservando ad occhio la lisciatura ed il ritardo è invece il metodo, pratico, che ho scelto, perchè sono più interessato direttamente alle caratteristiche grafiche.

Cominciamo i test su strada, dunque, partendo dal confronto con la media più semplice. Il SuperSmoother filter (SSM) è quello di colore blu.


SuperSmoother vs Simple Moving Average





Non ci sono molti dubbi: il SSM di Ehlers batte la SMA perchè è più liscia a parità di ritardo. Entrambe comunque seguono il grafico piuttosto da vicino. Il lookback della SSM è di 10, il minimo, ed assomiglia alla SMA quando il lookback della SMA è settato a 5.


SuperSmoother vs Exponential Moving Average


Ha sicuramente meno ritado questa media esponenziale ma è anche molto meno liscia. SI potrebbe preferire il SSM. Il periodo equivalente della EMA è 5.


SuperSmoother vs Weighted Moving Average



La media pesata WMA ha meno ritardo del SSM, una barra in meno, ma ha più falsi segnali. 


SuperSmoother vs Triangular Moving Average




Con una certa sorpresa la TRIMA, la media mobile triangolare, una delle medie meno usate,  si comporta invece egregiamente. Ritardo simile alla SSM di Ehlers con una capacità di filtraggio comparabile.


SuperSmoother vs Hull Moving Average




La media di Hull ha una lisciatura o capacità di filtraggio e ritardo simili alla SSM ma ha un comportamento singolare, cioè una amplificazione del segnale in prossimità delle cuspidi (overshooting). Varrebbe la pena fare qualche esame ulteriore, probabilmente la HMA è adatta ad applicazioni particolari.

SuperSmoother vs Moving Linear Regression



La regressione lineare con lookback 15 è molto simile alla media di Hull. Il ritardo è minimo ma il filtraggio è poco convincente.  Ridurre il ritardo è facile al costo di perdere la capacità di smoothing. Senza smoothing infatti otterremmo ovviamente la serie dei prezzi originale. Non avremmo più informazioni, dal punto di vista analitico, che il prezzo già non avrebbe.


SuperSmoother vs Exponential ZL Moving Average


La media esponenziale zero lag (cioè a ritardo nullo, almeno così dice il nome) in effetti anticipa lo SSM di almeno una barra. Ha qualche falso segnale, cioè non un perfetto smoothing, come si nota bene sul grafico nel periodo intorno a Gennaio / Febbraio ed in generale su alcune altre cuspidi.

SuperSmoother vs Double Exponential Moving Average 


La DEMA necessita di due parametri: in questo caso per esempio rispettivamente 4 e 3. E' più difficile l'analisi perchè la diversa combinazione di essi può rimodellare la linea in modo differente. Sembra anticipare la SSM, ma ha uno smoothing inferiore. Nulla da segnalare rispetto alle medie precedenti.


SuperSmoother vs Triple Exponential Moving Average 


La TEMA richiede 3 parametri, in questo caso 3;2;3 rispettivamente. Anticipa SSM di meno di una barra però presenta qualche discontinuità, per esempio a Febbraio.

SuperSmoother vs Butterworth Filter


Il filtro di Butterworth a 2 poli ha un andamento molto vicino all SSM. Stesso ritardo, ma, sulle cuspidi, presenta un overshooting minore del SSM. Difficile giudicare ma, secondo me, questo filtro presenta già quel tipo di distorsione che Ehlers ha cercato di evitare con il SSM.


Conclusioni


Il SuperSmoother passa questo tipo di esame, nonostante alcune medie siano davvero simili e, forse, l'esercizio di confrontarle possa sembrare inutile;  specialmente quando utilizzate come guida nel trading discrezionale, dove l'occhio non necessita di una eccessiva precisione perchè il cervello corregge automaticamente la figura visualizzata prima che noi si prendano delle decisioni.

Credo che piccole differenze potrebbero invece dare risultati molto differenti se utilizzate in un algoritmo.

Comunque di seguito presento l'utilizzo di due SSM a 10 periodi di cui il secondo ritardato di una barra ed utilizzato come indicatore di inizio, continuazione e fine trend,  evidenziati dagli incroci nei punti di svolta. Credo siano visivamente molto efficaci, molto di più che l'utilizzo due medie mobili con periodi differenti.






Di seguito posto il codice di questo indicatore. Il periodo di lookback dovrebbe essere sempre maggiore o uguale a 10 per evitare di peggiorare la capacità di filtraggio.


// Supersmoother Cross

if barindex > 1 then

a1 = EXP(-1.414*3.14159 / period)
b1 = 2*a1*COS(1.414*180 / period)
c2 = b1
c3 = -a1*a1
c1 = 1 - c2 - c3
Filt = c1*(Close + Close[1]) / 2 + c2*Filt[1] + c3*Filt[2]

endif

return Filt, Filt[1]

// input: period >= 10 to avoid aliasing noise