PowCandle

PowCandle è il nuovo algo-trading che ho messo a punto e sto testando. E’ un mix tra Candlestick, nello specifico BeltHold e mix indicatori trend following, quasi tutte medie EMA,SMA e HMA. Come con tutti i schemi basati su Candlestick tra acquisto e vendita devono passare pochi giorni. I candlestick infatti intercettano un movimento particolare che porta a un momentaneo rialzo o ribasso dell’asset.

Il momento migliore per comprare in un trend rialzista è in chiusura di mercato, ossia il momento in cui tutti gli operatori che hanno aperto posizioni long intraday le chiudono, ammassano molti ordini di vendita. Purtroppo il sistema che ho messo a punto ha bisogno del completamento del pattern grafico, quindi l’acquisto deve essere rimandato al mattino successivo. Metto a confronto tre modi di operare:

  1. aprire la posizione a mercato in fase di apertura del mercato
  2. aprire la posizione con limite di prezzo
  3. aprire la posizione (barando, tanto sono in simulazione) alla chiusura del giorno prima

All’apparenza sono molo simili i tre modi di procedere, ma il risultato è diverso. Nel primo modo di operare i prezzi di acquisto sono più alti perché in apertura di marcato su un mercato rialzista entrano gli operatori intraday, con volumi che alzano il prezzo.

Nel secondo scenario viene fissato un limite di prezzo, quindi entro più basso, ma perdo l’opportunità di tutte quegli asset che non tornano più giù perché stanno decollando.

Il terzo scenario è quello in cui a ogni chiusura di mercato faccio una valutazione e copro in asta alle 17:40. Improponibile per il mio approccio.

Le simulazione viene fatta sul set di asset a cui sono abituato. L’importo cash da investire è 500.000€ per evitare di avere situazioni di indisponibilità, le % sono calcolate su quell’importo. La linea di benchmark gialla è un BuyAndHold sul FTSE MIB, giusto per avere un macro riferimento dell’andamento di mercato.

Apertura posizione a mercato in apertura di mercato

Apertura posizione in apertura di mercato con limite di prezzo alla chiusura del giorno precedente

Apertura posizione in chiusura di mercato il giorno di presentazione del pattern

Gli scenari sono molto simili, ma tenendo conto che non volgiamo barare e che l’ultimo scenario non è attuabile conviene optare per lo scenario di acquisto in apertura con limite di prezzo. Offre meno opportunità (Time in market <) ma un ritorno equivalente e quindi uno sharpe maggiore. Si può osservare come i momenti in perdita della schema siano sovrapponibili ai momenti in calo del mercato. Ogni trade rimane nel mercato pochi giorni e questo è lo scenario ideali di applicazione di un filtro sul FTSE MIB. Non mentendo posizioni aperte a lungo quando il filtro smette di operare le nuove posizioni rialziste si aprono subito. Inserendo un filtro basato su media mobile del FTSE MIB a 200 giorni mi aspetto che le performance dello schema di trading migliorino. Faccio solo simulazioni, ad apertura di mercato con limite di prezzo e senza limite di prezzo

Apertura posizione a mercato in apertura di mercato con filtro SME 200 su FTSE MIB

Apertura posizione in apertura di mercato con limite di prezzo alla chiusura del giorno precedente con filtro SME 200 su FTSE MIB

L’effetto del filtro è immediato e si vede il beneficio soprattutto attraverso l’indice di sharpe che passa da 0,93 a 1,46. Aprire le posizioni con limite di prezzo mantiene un indice di sharpe superiore, ma il ritorno complessivo è più basso. Questo è giustificato dal fatto che si entra complessivamente in meno posizioni rispetto a un semplice ingresso a mercato. Ultimi due test sono con un capitale cash limitato, in questo modo misuriamo anche la robustezza rispetto a una riduzione casuale degli asset su cui investire. Eseguo una sola simulazione usando il sistema scelto (ingresso a mercato) e capitale limitato a 100K€.

Apertura posizione a mercato in apertura di mercato con filtro SME 200 su FTSE MIB e cash limitato a 100K

In termini assoluti il ritorno è inferiore, 230.974 € a 161.995€ ma a fronte di una disponibilità economica nel range ‘accettabile’. La curva mantiene la propria espressività ma l’indice di sharpe peggiore leggermente. Due punti rendono il sistema poco performante:

  1. Time-in-Market basso: solo il 54% rimaniamo nel mercato, sia per il filtro, ma anche per le occasioni offerte. Per risolvere occorre pensare a un approccio short analogo da usare quando il filtro è attivo.
  2. Reivestimento: La possibilità di reinvestire i guadagni è limitata a nuove opportunità, non si riesce a fare un piano programmatico di reinvestimento. Per farlo bisognerebbe conoscere a priori il numero di asset su cui ripartire la disponibilità.

Un’ultima simulazione con capitale ulteriormente limitato a 50K mostra che nel complesso il sistema è sufficientemente robusto.

E’ interessante notare che il time-in-market rimane invariato, lo share cala, perché il DD in % aumenta, ma anche il ritorno in % aumenta. Il sistema è più volatile.

La notte porta consiglio o effetto Tobin Tax

EDIT: L’effetto è legato alla Tobin Tax. Investitori che entrano nel marcato a inizio giornata ed escono a fine giornata. Nascono due spunti di riflessione da approfondire:

  • Si potrebbe verificare, a riprova, se l’effetto è presente solo nei titoli soggetti a Tobin Tax o anche altri titoli
  • Esistono titoli per i quali si presenta questa situazione e non sono soggetti alla Ton tax

Il titolo sembra fuorviante, ma ciò che emerge dalle prove è che il trading overnight presente alcune sorprese interessanti

Sto sempre giocando con i diversi algoritmi di trading e a un certo punto mi sono chiesto qual’é il comportamento dei titoli a marcato aperto e mercato chiuso. In particolare c’è una correlazione tra il comportamento che un titolo ha durante la notte tra la sua chiusura e l’apertura il giorno seguente?

Per di rispondere a questa domanda ho fatto alcune prove con il mio solito dataset di test, una di queste è stata di aprire per ciascun titolo una posizione a inizio giornata e chiuderla a fine giornata, sfruttando quindi il mercato aperto e successivamente aprire una posizione a chiusura mercato e chiuderla il mattino seguente, sfruttando quindi le correnti overnight.

Il benchmark di riferimento è sempre la strategia che prediligo ‘BuyAndhHold’. I risultati ottenuti meritano una certa attenzione. Riporto qui di seguito i dati comuni a tutti i test:

  • Capitale iniziale: 300.000 €
  • Dimensione delle posizioni: 10.000 €
  • Tassazione non applicata

Buy And Hold

Già visto in altri post, riporto qui il grafico e i dati di sintesi:

Cumulative Return168.0%
CAGR%9.38%
Sharpe0.53
Sortino0.73
Max Drawdown-37.75%
Longest DD Days978
Volatility (ann.)20.9%
Calmar0.25
Skew-0.83
Kurtosis9.07
Tabella riepilogativa

Buy on Open Sell on Close

La seconda strategia si basa su aprire una posizione in asta di apertura dei mercati e chiudere la posizione in asta di chiusura. Il grafico evidenzia come la tendenza a mercato aperto sia al ribasso anche quando la tendenza complessiva del mercato sia a rialzo.

Cumulative Return-74.35%
CAGR%-11.64%
Sharpe-0.52
Sortino-0.69
Max Drawdown-77.48%
Longest DD Days4009
Volatility (ann.)19.78%
Calmar-0.15
Skew-0.58
Kurtosis4.55

Buy on Close – Sell on next Open

La medesima prova eseguita invertendo l’operatività evidenza come le aperture di marcato siano tendenzialmente più alte delle chiusure del giorno precedente. La somma dei due grafici fornisce l’andamento della strategia BuyAndHold. Il grafico BuyOnCloseSellOnOpen è quasi elettrizzante, con indice di Sharpe pari 1,62 e un indice Sortino di 2,29. La rendita giornaliera, al lordo delle tasse e commissioni è dello 0,04% che diventa 10,73 % su base annuale, mantenendo costante l’importo investito a titolo nel tempo.

Cumulative Return206.87%
CAGR%10.74%
Sharpe1.62
Sortino2.29
Max Drawdown-6.82%
Longest DD Days273
Volatility (ann.)6.38%
Calmar1.57
Skew-1.35
Kurtosis30.67

La fregatura sta in quel 0,04%, l’applicazione della tobin tax pari allo 0,1 % fa si che mediamente la perdita giornaliera sia di ca 0,06%. Il grafico sottostante mostra la medesima simulazione in cui sono state applicate commissioni e tasse. Come si può vedere la pendenza è negativa così come il ritorno cumulativo. La simulazione è stata fatta con capitale limitato a 310.000 €, questo fa si che alcuni risultati sembrino ‘falsati’ rispetto a uno scenario a capitale illimitato ma sono anche più realistici. La curva discendente disegna infatti un’iperbole legata al fatto che ogni giorno di perdita riduce la capacità di investimento nei giorni successivi. Per il resto il diagramma parla da se.

Cumulative Return-99.13%
CAGR%-35.08%
Sharpe-1.87
Sortino-2.51
Max Drawdown-99.13%
Longest DD Days4012
Volatility (ann.)21.68%
Calmar-0.35
Skew1.13
Kurtosis46.44

Gli ultimi di grafici che aggiungo sono legati ai CFD, infatti questi strumenti sulla carta ricalcano l’andamento del sottostante al netto di uno spread e non sono soggetti alla tobin tab. Per i CFD va tenuto conto che ogni intermediario è indipendente come fosse un mercato a se stante. Non dispongo dei titoli che uso nel mio paniere per cui i grafici che propongo sono di 7 titoli per l’ultimo anno con capitale 60.000€ . Da quello che si vede dai grafici l’applicazione di uno spread fa si che anche nel caso di CFD la strategia “Buy on Close – Sell on next Open” non è efficace. In pratica lo spread applicato sostituisce in toto la tobin tax con la differenza che la tobin tax entra nelle casse governative ed è stimabile mentre lo spread sui CFD nelle tasche dell’intermediario e non è prevedibile.

Questa immagine ha l'attributo alt vuoto; il nome del file è immagine-7.png
Andamento strategia 1Y – 7 stock
Andamento strategia 1Y – 7 CFD corrispondenti

Ore che ho raccolto i primi elementi posso cercare una correlazione per capire in che modo l’operatività a mercato aperto sia correlata al gap overnight.

Linux suspend issues

It’s been quite a lot of time that mi HTPC remained turned on, when I tried to suspend the system I had plenty of issues.

First issue is that dvb didn’t resume correctly generating a lot of “m88ds3103 0-0069: i2c wr failed=-6″ errors.” after resume and DVB not working at all. For a HTPC it’s a big issue since the main purpose of the HTPC is view dvb content. It seemed I just needed to remove the m88ds3103 module and insert it again after suspend. Sadly the module showed three usages

htpc@htpc:~$ lsmod |grep m88
m88ds3103 32768 3 cx23885

Removing the cx23885 module still show 2 usages without any clear indication of what is going on:

htpc@htpc:~$ lsmod |grep m88
m88ds3103 32768 2

No way to remove the module. After various tentative I identified the module that kept m88ds3103 busy, it’s the smipcie module, so to remove the m88ds3103 module I first need to remove the smipcie module. From my point of view this should be considered a defect either in the lsmod or in the module itself, since no dependency module is identified.

the second issue is related to the HTPC waking up just after suspending. Again after some researches I found the the HTPC wakes up on any kind on USB UHC event, this means constantly. I found no way to disable this as configuration. So I created my own hook for the suspend, it just disables wake up on USB/UHC before going to sleep executing echo “UHC1” > /proc/acpi/wakeup for all the peripherals.

With this two patches the suspend works smoothly, it just take a while to stop mythtv-backend, but otherwise no issues.

The script is named /usr/lib/pm-utils/sleed.d/50htpc to be put in the folder /usr/lib/pm-utils/sleed.d/

This is the code:

. "${PM_FUNCTIONS}"
suspend_htpc()
{
    service mythtv-status stop
    service mythtv-backend stop
    rmmod cx23885
    rmmod smipcie
    rmmod m88ds3103
     devices="UHC1 UHC2 USB3 UHC4 USB5 UHC6 UHC7"
    for device in ${devices}; do
            if grep -qw ^$device.*enabled /proc/acpi/wakeup; then
                    sudo sh -c "echo $device > /proc/acpi/wakeup"
            fi
    done
}
resume_htpc()
{
   modprobe m88ds3103
   modprobe smipcie
   modprobe cx23885
   service mythtv-backend start
   service mythtv-status start
}
case "$1" in
 hibernate|suspend)
 suspend_htpc
 ;;
 thaw|resume)
 resume_htpc
 ;;
 *) exit $NA
 ;;
 esac

Algoritmi di trading

Di recente mi sono appassionato, per vari motivi tra cui la voglia di sperimentare nuove tecnologie, agli algoritmi di trading automatico. Qualche tempo fa ho letto un libro di AI (Artificial Intelligence) o all’italiana IA e mi sono chiesto se effettivamente algoritmi di ML (Machine Learning). La mia ambizione è solo quella di divertirmi con un nuovo giocatolo, non certo di competere con bravi scienziati, investitori e trader che si stanno cimentando con la materia. Fatte le prime prove mi sono reso conto che il passo verso algoritmi di AI possono arrivare solo dopo aver preso padronanza con la materia, ossia l’analisi tecnica e il backtesting.

Imparato un po’ di pyhton e le API Backtrader per il testing su dati storici mi sono creato la mia sandbox. Purtroppo in italiano non esiste un termine che esprime il significato per ‘sandbox‘, in tedesco direi Sandkiest, In italiano sarebbe sabbiera o qualcosa del genere. in pratica la scatola di sabbia in cui giocano i bambini nei parco giochi inglesi e tedeschi. In Italia si gioca con la sabbia al mare, non in una scatola come invece fanno i bambini tedeschi e inglesi. A ogni modo mi sono creato l’ambiente con cui giocare così composto:

  • Python con framework Backtrader
  • Storico dei dati giornalieri di alcune azioni FTSE MIB dal 2010 a fine 2020.
  • Algoritmi di trand following da sperimentare

Il paniere di azione è composto da alcune azioni che hanno dati storici fino al 2010 , nello specifico questo è l’elenco di 26 azioni che ho utilizzato per le mie prove:

tickers = [
'ENEL','ENI','EXO','FCA','G','HER','IP','ISP','MB','PRY',
'A2A','AMP','ATL','BAMI','BGN','BMED','BPE','BZU','CPR','DIA',
'SRG','STM','TEN','TIT','UCG','UNI'
]

La scelta di Backtrader è legata semplicemente al fatto che ho trovato una guida rapida e veloce che nel giro di una giornata mi ha consentito di implementare il primo algoritmo. E’ semplice intuitivo e con alcune funzioni di ottimizzazione degli algoritmi. Gestisce la simulazione con diversi aspetti come le commissioni, OCO, stop, limit, gestione del cash e dimensionamento degli ordini,…. Framework ben fatto con due limiti individuati fino ad ora:

  • Elevato utilizzo della memoria nelle ottimizzazione, per ottimizzare 5 parametri sul mio portafoglio di 10 pagina troppo. Sicuramente il fatto che uso un PC con 8GB non aiuta, ma credo che l’algoritmo sia pensato per le prestazioni a discapito della ram. In effetti le CPU (8) sono sempre a tappo quando gira l’ottimizzazione.
  • Il secondo limite è l’utilizzo degli stoploss, take profit e trailing stop. Tipicamente queste sono caratteristiche legate agli ordini stessi, su Backtrader vanno implementate ad hoc con alcuni accorgimenti in modo un po’ macchinoso.

Presa padronanza del sistema ho voluto fare delle prove con diverse strategie di trand following che si trovano abitualmente in giro. Ho saltato i classici incroci di medie e mi sono soffermato su 3 strategie che si appoggiano ad indicatori interessanti e popolari: HMA, MACD e RSI. Ho incrociato i diversi indicatori perché ovunque si legge che un indicatore da il segnale e il secondo la conferma. Ovviamente non mi sono inventato l’acqua calda ho iniziato con le strategie ritenute valide da esperti del settore.

I risultati che ho ottenuto mi hanno aperto gli occhi su alcuni nozioni studiate sulla carta e per le quali l’istinto darebbe indicazioni contrarie.

Di seguito i risultati delle prove fatte, con il seguente contesto di contorno:

  • Solo posizioni long
  • Entrate con importo costante da 10.000€
  • Cash iniziale 260.000€ sufficiente per coprire acquistare tutti i titoli insieme
  • Nessuna leva
  • Senza Stop loss o trailing stop
  • Prese di posizione solo al verificarsi di eventi legati alla strategia
  • Indici di valutazione: permanenza nel mercato, ritorno cumulativo, sharpe, max drowdown e DD più lungo, altri indicatori non sono interessanti almeno per me
  • Vengono applicate commissioni 6,75€ a eseguito e la tobing tax al 0,7%
  • Vengono utilizzati i dati di Yahoo Finance aggiustati sulle operazioni societarie (split, dividendi,…)

RSI

  • Entrata in situazione di iperventuto RSI < 30
  • Uscita dopo 5 giorni o RSI > 50

Il risultato è stato deludente, dal 2010 al 2018 ha raggiunto un ritorno di 15% ca, ma nel 2018 ha subito un calo importate e poi un crollo nel 2020 con il crollo dei mercati di marzo. Dopo 10 anni ha totalizzato ricavi netto tobin tax lordo cap.g. per 2.431€. La permanenza nel mercato è stato da 54%, ossia molto poco tenendo conto che sono 26 i titoli su cui operare.

Time in Market50.0%
Cumulative Return0.94%
CAGR%0.08%
Sharpe0.05
Sortino0.06
Max Drawdown-26.55%
Longest DD Days959
Riepilogo risultati RSI 2010-2020

Qui il link alla scheda del risultato.

MACD

  • Entrata con istogramma positivo
  • Uscita con istogramma negativo

Il risultato è decisamente migliore con un guadagno netto di 231.563€. Nel periodo 2011-2012 non è stato possibile entrare su alcune posizione per assenza di liquidità. L’impossibilità ad entrare in posizione altera il risultato della simulazione perché riduce le perdite ma ritarda anche i guadagni.

Time in Market55.0%
Cumulative Return89.06%
CAGR%5.96%
Sharpe0.53
Sortino0.76
Max Drawdown-31.14%
Longest DD Days1091
Riepilogo risultati MACD 2010-2020

Qui il link alla scheda del risultato.

HMA

  • Entrata: HMA passa da decrescete a crescente
  • Uscita: HMA passa da crescete a descrescente

Il risultato non è entusiasmante, la liquidità è scarsa dal 2011 al 2013, molte operazioni non vengono eseguite assenza di liquidità e al termine del periodo il guadagno netto è di 89.761 € (netto tobin lordo cap.g.).

Time in Market58.0%
Cumulative Return34.52%
CAGR%2.73%
Sharpe0.26
Sortino0.37
Max Drawdown-37.55%
Longest DD Days2037
Riepilogo risultato HMA 2010-2020

Qui il link alla scheda del risultato

Buy and Hold

Il risultato più interessante è dato dalla strategia Buy and hold, ossia compro il 1/1/2010 e vendo il 31/12/2020. Bene, con questa strategia il P&L netto è di 433.342, ossia il capitale di partenza è moltiplicato per 2,66, una media di ca. 10% annuo.

Time in Market100.0%
Cumulative Return166.74%
CAGR%9.33%
Sharpe0.52
Sortino0.71
Max Drawdown-38.63%
Longest DD Days970
Riepilogo risultato buy and Hold 2010-2020

Qui il link alla scheda del risultato

Per riassumere la strategia vincente sembra essere Buy and Hold la migliore.

BAHMACDHMARSI
Time in Market100.0%55.0%58.0%50.0%
Cumulative Return166.74%89.06%34.52%0.94%
CAGR%9.33%5.96%2.73%0.08%
Sharpe0.520.530.260.05
Sortino0.710.760.370.06
Max Drawdown-38.63%-31.14%-37.55%-26.55%
Longest DD Days97010912037959
Tabella comparativa strategie

Guardando il puro profitto la strategia ‘BuyAndHold’ è sicuramente la strategia migliore, ma a lunga distanza. In un decalogo di regole direi che la prima da mettere è di non chiudere una posizione in perdità salvo in caso di necessità di liquidità o per una strategia molto profittevole. Il periodo sott’acqua è molto lungo 970 giorni con una perdita massima del 38,63%.

Considerando l’indice di sharpe la strategia MACD sembra migliore perché in effette è più costante nel tempo. Una simulazione togliendo le commissioni e la tobin tax mostra come la MACD sia tutto sommato migliore per alcuni aspetti rispetto alla BuyAndHold. In particolare il periodo DD massimo è di ‘soli’ giorni 640 giorni, ben 330 in meno rispetto a BuyAndHold. L’indice di sharpe si porta a 0.62 e il rendimento si assesta su 288.923€. Nel corso di 10 anni vengono lasciati ben 50.000 in commissioni e tobin tax sul campo.

Time in Market55.0%
Cumulative Return111.12%
CAGR%7.03%
Sharpe0.62
Sortino0.91
Max Drawdown-30.2%
Longest DD Days640
Strategia MACD 2010-2020 senza commissioni e tobin tax

Ecco il factsheet della strategia MACD senza commissioni

Group-buy

Ho deciso di iniziare un nuovo progetto nel tempo libero. Si tratta di realizzare un sito pensato per agevolare i negozianti nella gestione degli ordini.

Non so quanto può prendere piede la mia iniziativa e credo che servirebbe un investimento superiore a quello che riesco a mettere in campo io.

L’idea è di consentire ai negozi di zona di ricevere ordini, anche collettivi come ad esempio ordini condominiali. Oltre a questo la possibilità di caricare un prorpio elenco prodotti con i prezzi.

Qualcosa di veramente semplice che semplifichi la gestione.

http://www.group-buy.it/

WP to LinkedIn Auto Publish Powered By : XYZScripts.com