martedì 2 giugno 2020

applicazione13


- Svolgere l'Esercizio 4 indicato nel video 49 (processo aleatorio + ordini e calcolo PNL)

- Completare l'Esercizio 4 aggiungendo i 4 indicatori quantitativi indicati alla fine del video 52  (Running Mean, Moving Averages, Moving STD, Bollinger Bands).https://drive.google.com/file/d/1Nz-V3S-cFzpAmXERY7B-COTRS8KIve5M/view?usp=sharing

Alcuni esempi di strategie di trading algoritmico utilizzate

Il trading algoritmico viene chiamato anche “trading automatico” o “trading ad alta frequenza” e utilizza un sistema di calcolo basato, come dice il nome stesso, su un algoritmo. Si tratta quindi di un software che determina in questo caso le posizioni da prendere, la direzione della tendenza, il volume da trattare ed infine la strategia da mettere in opera.
Il trading algoritmico presenta quindi alcuni vantaggi.
  • In primo luogo, il trading algoritmico permette ai trader principianti che non dispongono di alcuna formazione né esperienza nel settore del trading, di ottenere dei profitti interessanti assai rapidamente.
  • Il trading automatico permette poi una presenza sui mercati 7 giorni su 7 e 24 ore su 24, cosa che nessun essere umano può fare.
  • Infine il trading algoritmico segue una strategia rigida basata unicamente sull’analisi tecnica dei mercati e non subisce né stress né emozioni suscettibili di causare degli errori.
  • 1)Il day trading consiste nel comprare e vendere attività nella stessa sessione giornaliera. Non prevede, quindi, posizioni overnight, minimizzando i rischi associati ai movimenti del mercato durante la notte. L’obiettivo principale: ottenere benefici dai piccoli movimenti di prezzo. Gli svantaggi: richiede molto tempo ed è adatta solo per i trader a tempo pieno. Per guadagnare da piccoli rialzi o ribassi devi monitorare i mercati costantemente e devi essere preparato a prendere decisioni molto velocemente in caso di cambiamento delle condizioni del mercato.
  • 2)Position trading: questa strategia consiste nell’acquistare un’attività e mantenerla per parecchi giorni/settimane (spesso anche più a lungo), nella speranza che il prezzo di tale attività possa salire. I position trader tendono ad aspettarsi un profitto maggiore per posizione rispetto ai trader intraday. Tuttavia i position trader assumono un rischio più elevato, legato al lungo periodo di tempo in cui sono in possesso delle attività. Questa strategia porta tali trader a fare meno negoziazioni.

  • 3)Swing trading: questa tecnica si concentra sui grafici e sull’analisi tecnica per individuare particolari movimenti di breve dei prezzi. I trader che utilizzano tale strategia non sono particolarmente interessati al valore fondamentale o intrinseco di una particolare attività. Quello che cercano sono determinati pattern o trend nei prezzi dello strumento in esame. Le posizioni generalmente sono mantenute per qualche giorno, per periodi più lunghi rispetto ai trader intraday ma più corti rispetto ai position trader. Diversamente rispetto agli operatori che seguono il trend, spesso gli swing trader assumono posizioni contrarie rispetto alla principale tendenza del mercato.
  • 4)Trend Following: questa strategia consiste nell’analizzare se un mercato è in rialzo o in ribasso. Prendi una posizione long se il mercato è al rialzo. Short se il trend è ribassista. I trader che seguono il trend restano in posizione long o short fino a quando non si presenta un’inversione di tendenza. Questo significa che tale strategia può essere applicata nel breve, medio e lungo periodo.

Bollinger Bands


Le bande di Bollinger sono considerate uno degli strumenti più importanti e più funzionanti nel panorama degli indicatori di analisi tecnica. In particolare fanno parte degli indicatori di volatilità del mercato ma assolvono anche ad altre importanti funzioni.
Per le loro caratteristiche, le bande di Bollinger permettono di capire in che modo si muoveranno le valute, anticipando possibili inversioni di tendenza e non solo.
Le bande di Bollinger offrono la possibilità ai traders di creare una strategia vincente e soprattutto efficace.
Le bande di Bollinger si compongono nel seguente modo:
  • una media Mobile Lineare a N giorni, che rappresenta la linea centrale;
  • la banda superiore si ottiene da una media mobile lineare a cui si somma K volte la deviazione standard (MA + Kσ);
  • la banda inferiore si ottiene da una media mobile lineare a cui si sottrae K volte la deviazione standard (MA – Kσ).
La banda, delimitata dalla linea superiore e dalla linea inferiore, formerà una specie di canale dinamico la cui ampiezza aumenta e diminuisce in funzione della volatilità del titolo, racchiudendo così un’alta percentuale delle sue oscillazioni.
Bande di Bollinger - Wikipedia
Questo indicatore nasce per misurare la volatilità del mercato, ma assume poi delle caratteristiche ben più interessanti. Mediante la combinazione delle bande di Bollinger con altri indicatori si può derivare l’inversione di un trend e i momenti migliori di buy/sell.

Moving averages

La media mobile, o più comunemente conosciuta come Moving averages (MA), è uno strumento utilizzato per l’analisi di serie storiche.  In particolare, è uno dei metodi statistici più semplici, e quindi più utilizzati, per eliminare il “rumore” dalle fluttuazioni casuali del prezzo sul breve periodo, smussando così la curva del prezzo
Data una serie storica \{y_{t}\},\quad t=1,2,\dots ,T, contenente i valori osservati di una variabileY dal tempo 1 al tempo T, siano:
  • m_{1} il numero dei periodi precedenti a t;
  • m_{2} il numero dei periodi successivi a t;
  • \theta _{i} il peso da attribuire all’i-esimo valore osservato;
si definisce media mobile al tempo t il valore:
{\displaystyle mm_{t}={\frac {1}{k}}\sum _{i=-m_{1}}^{m_{2}}\theta _{i}y_{t+i}}
dove:
  • k=m_{1}+m_{2}+1 è il periodo o l’ordine della media mobile, ed equivale al numero degli addendi.
Una media mobile viene detta:
  • semplice se i pesi \theta _{i} sono tutti uguali a 1 (in tal caso, si tratta di una normale media aritmetica);
  • centrata se m_{1}=m_{2};
  • simmetrica se centrata e se \theta _{{i-m}}=\theta _{{i+m}} per ogni m compreso tra 1 e m_{1}=m_{2}.
Esistono diversi tipi di medie mobili che differiscono tra loro semplicemente nella formula di calcolo:
  • Simple Moving Average, SMA, detta anche aritmetica, rimane quella più usata dagli analisti e di più facile calcolo. Vengono presi i dati di un determinato periodo e ne viene calcolata la media sommandoli fra loro e dividendo per il numero totale di valori. Questo tipo di media però viene spesso criticata da molti in quanto assegna la stessa importanza ad ogni singolo dato.
  • Weighted Moving Average, WMA. Sono state ideate per ovviare al problema delle medie mobili semplici riguardo al peso da assegnare ai valori presi in considerazione. Quindi viene associato, ad ogni osservazione, un peso in base alla vicinanza temporale all’ultimo prezzo considerato in modo da dare maggiore importanza agli ultimi prezzi rilevati. Resta il fatto che nonostante le varianti di calcolo anche questa media mobile non riesce a dare istantaneamente un’idea di quello che sta accadendo sul mercato.
  • Exponential Moving Average, EMA. Questa media mobile viene generata da un sistema di calcolo molto più complesso che cerca sempre di eliminare le carenze della media mobile semplice. Viene quindi dato un peso differente ai vari prezzi, maggiore ai più recenti e minore a quelli più vecchi, fatto che porta molti a definirla media mobile ponderata esponenziale. Nonostante dia un’importanza minore ai prezzi passati li include ugualmente nel suo calcolo prendendo in esame quindi molti più valori di quelli definiti dal periodo della media mobile. Resta di fatto un indicatore quasi impossibile da generare se non attraverso il computer in quanto la sua formula resta di difficile calcolo per qualsiasi analista.

Applicazione12


- Aggiungere all'Esercizio 2 sui Processi Stocastici, anche 2 esempi di modello con Mean reversion (uno per incrementi aritmetico, uno per incrementi geometrici)
- Svolgere l'Esercizio 3 indicato nel video 60 di calcolo/scomposizione PNL, e rappresentazione grafica del lot matching.

https://drive.google.com/file/d/1Upl906OV3gH1Y9i96bDp61RuHRetD675/view?usp=sharing


Timer e Backgroud worker e nozione di "extension method":

Nelle attività di trading vogliamo simulare un flusso di dati che  arriva da un mercato cioè da un Exchange e quindi questo flusso di dati non arriva in istanti equispaziati e non arriva con una velocità che è tipica  di quella di un loop.  Arrivano dei tickdata costituiti da un time span e prezzo.
Potremmo avere un certo numero di tick al minuto, dipende da quanto è scambiato lo strumento. Per simulare questo tipo di situazione che è quella più realistica, non andiamo ad utilizzare un ciclo per rappresentare la nostra curva di prezzi, ma utilizziamo l'oggetto Timer per generare ad istanti  casuali i nostri tickdata che di default generano istanti equispaziati. 
CLASSE TIMER: consente l’implementazione di un timer che restituisce il tempo impiegato dal programma necessario ad eseguire l’operazione richiesta. Si tratta di una classe molto importante in quanto permette di scegliere l’algoritmo migliore (tra più algoritmi riferiti ad una stessa operazione) affinchè possa eseguire l’operazione nel minor tempo possibile. In particolare, implementa un timer con il quale viene generato un evento a intervalli definiti dall’utente. Questo timer è ottimizzato per l’uso in applicazioni Windows Forms e deve essere usato in una finestra.
BACKGROUND WORKER: consente di eseguire un’operazione su un thread separato dedicato. Le operazioni che richiedono molto tempo, come i download e le transazioni di database, possono comportare la mancata risposta dell’interfaccia utente come se fosse in esecuzione. Dunque, quando si desidera un’interfaccia utente reattiva e si devono affrontare lunghi ritardi associati a tali operazioni, questa classe fornisce una soluzione pratica. È possibile creare il BackgroundWorker a livello di codice oppure è possibile trascinarlo sul form dalla scheda componenti della casella degli strumenti. Se lo si crea nel Progettazione Windows Form, questo verrà visualizzato nella barra dei componenti e le relative proprietà verranno visualizzate nella Finestra Proprietà.
EXTENSION METHOD: I metodi di estensione consentono agli sviluppatori di aggiungere funzionalità personalizzate ai tipi di dati già definiti senza creare un nuovo tipo derivato. I metodi di estensione consentono di scrivere un metodo che può essere chiamato come se fosse un metodo di istanza del tipo esistente. Un metodo di estensione può essere solo una routine Sub o una procedura di Function. Non è possibile definire una proprietà, un campo o un evento di estensione. Tutti i metodi di estensione devono essere contrassegnati con l’attributo di estensione <Extension> dallo spazio dei nomi System.Runtime.CompilerServices e devono essere definiti in un modulo. 

scomposizione del PNL e concetto di matching degli ordini

Simulazione di trading strategy 

La  trading strategy è una serie di regole con cui compro e vendo il mio strumento finanziario. Ci interessa implementare una strategia soltanto come pretesto per imparare a  capire cosa c'è dietro, non importa che sia una strategia profittabile. Il nostro focus è generare degli ordini e imparare a calcolare il PNL( profit and loss) e plottarlo. Sulla nostra traiettoria di BID e ASK dovremmo andare a proiettare i nostri ordini di buy  e sell ciascuno sulla rispettiva curva.



E via via che plottiamo questi ordini dobbiamo essere in grado di calcolare in tempo reale il PNL→ cioè quanto stiamo guadagnando e quanto stiamo perdendo.



Dal momento che io vado ad implementare la mia strategia, mi interessa calcolare il mio PNL(non che sia positivo), cioè data la sequenza degli ordini e del prezzo corrente, calcolare in modo real time quanto sto perdendo e guadagnando.

Questi Profit &  Loss(PNL) che cosa è ?

E'una funzione del tempo aleatoria che dipende da :
1) dagli ordini che abbiamo fatto
2) dall'evoluzione del prezzo dello strumento finanziario nel tempo


Il PNL è dato dalla differenza tra il prezzo sell ed il prezzo buy  moltiplicato per la quantità scambiata Q (assumendo che la quantità venduta ed acquistata sia la stessa) ed eventualmente anche per il moltiplicatore associato allo strumento considerato M. Nel PNL dovrà essere considerata anche la commissione, ovvero prezzo dell’operazione che rappresenta una perdita immediata ed inevitabile.
Utilizzeremo una strategia più semplice possibile dato un certo strumento finanziario, si decide di comprare e in un secondo momento vendere una stessa quantità Q. In questo caso la formula per calcolare il PNL è la seguente:



PNL=(P_{SELL}-P_{BUY}) \cdot Q \cdot M

con 



P_{SELL}

 prezzo a cui vendo, rappresentato sulla curva BID, e 



P_{BUY}

 prezzo a cui acquisto, rappresentato dalla curva ASK.
Questa quantità tra parentesi può essere positiva o negativa a seconda che il prezzo sell sia maggiore o minore del prezzo buy.
NB
Questa formula sta a significare che so matchare gli ordini a due a due quando le quantità sono uguali!
 Il PNL è la somma di tre componenti, date dalla seguente formula:
PNL = Realized  + UNREALIZED
La somma dei profitti e delle perdite rappresenta la cosiddetta parte realized. Il termine unrealized si riferisce ai profitti (o perdite) non realizzati. 
  •  PNL Realized si riferisce al profitto/perdita di un azione completata, ossia per una posizione chiusa. Questo include anche le tasse e le commissioni associate alla transazione.
  • PNL Unrealized si riferisce al profitto/perdita corrente in una posizione aperta. Corrisponde al profitto o alla perdita che si sarebbe realizzata se la posizione fosse chiusa in quel momento.

Per scegliere con quale buy si vuole chiudere la posizione sell aperta, o viceversa. Vediamone alcuni criteri:
– first-in first-out (FIFO): sia gli “ordini” di acquisto che quelli di vendita vengono ordinati in ordine cronologico (il primo “ordine” di acquisto verrà matchato col primo “ordine” di vendita). Nel caso di una crescita dei prezzi, con tale metodo il PNL realizzato aumenterà, comportando quindi un aumento della relativa tassazione. Ha ben poco senso ai fini dell’obiettivo sopra dichiarato.Vogliamo costruire un algoritmo di questo, cioè che fa via via  i Matching scomponendo gli ordini e associando di volta in volta le quantità uguali 
last-in first-out(LIFO): gli “ordini” di acquisto seguono un ordine cronologico mentre quelli di vendita seguono un ordine cronologico inverso (l’ultimo “ordine” di acquisto viene matchato con il primo “ordine” di vendita). Nel caso di una crescita dei prezzi, con tale metodo il PNL realizzato diminuirà, riducendo quindi la relativa tassazione.
È importante far presente che al variare dell’order matching cambiano le componenti del PNL in termini di unrelized, realized e trade positivi e negativi, ma non cambia il PNL nel suo complesso.
L'obiettivo

Una volta visto come  implementare il PNL dobbiamo andare a creare il nostro processo aleatorio, ed implementare una strategia qualunque, anche la più semplice possibile. Dobbiamo generare  gli ordini calcolare il PNL con questo tipo di procedura appena vista  e tracciare entrambi i grafici sia quelli della :

  • Attività di trading 
  • PNL

applicazione13

- Svolgere l' Esercizio 4  indicato nel video 49 (processo aleatorio + ordini e calcolo PNL) - Completare l' Esercizio 4  aggiungen...