giovedì 25 maggio 2017

Il concetto di ereditarietà in informatica

In informatica l'ereditarietà è uno dei concetti fondamentali nel paradigma di programmazione a oggetti. Essa consiste in una relazione che il linguaggio di programmazione, o il programmatore stesso, stabilisce tra due classi.

Se la classe 1 eredita dalla classe 2, si dice che 1 è una sottoclasse di 2 e che 2 è una superclasse di 1. 

A seconda del linguaggio di programmazione, l'ereditarietà può essere singola o multipla. Si parla di ereditarietà singola quando una classe può avere al massimo una superclasse; si parla di ereditarietà multipla quando invece può avere anche più di una sola superclasse.

In generale, l'ereditarietà fornisce una gerarchia tra le classi: nel caso di un'ereditarietà singola, si ha una gerarchia che possiamo definire ad albero, in quanto esiste una superclasse radice di tutte le altre; nel caso di ereditarietà multipla, invece, la gerarchia può essere complessa, e può risultare più difficile stabilirla.

Descriviamo in un'immagine l'ereditarietà singola, tramite un esempio di tipo biologico:
Risultati immagini per ereditarietà informatica immagini

Descriviamo ora invece l'ereditarietà multipla, in un'altra immagine:

Risultati immagini per ereditarietà informatica immagini

Come si può osservare, la classe 4 ha due superclassi: la 1 e la 2.

Il Capital Asset Pricing Model

Il Capital Asset Pricing Model (brevemente, CAPM) è un modello di equilibrio dei mercati finanziari.
Esso stabilisce una relazione tra il rendimento di un titolo e la sua rischiosità, misurata tramite un unico fattore di rischio "beta". Matematicamente, il beta è proporzionale alla covarianza tra rendimento del titolo e andamento del mercato. 
Osserviamo la seguente relazione:

dove  sono il rendimento lordo del titolo in questione e del portafoglio di mercato,  è il rendimento lordo privo di rischio, e

In un modello ideale, in cui non esistono tasse, costi transattivi e in cui gli investitori hanno sia lo stesso orizzonte temporale per gli investimenti che le stesse identiche opinioni sui rendimenti attesi e sulla rischiosità, si possono incontrare due tipi di rischi:

1) il rischio diversificabile, ovvero che è possibile eliminarlo tramite diversificazione del portafoglio;
2) il rischio sistematico, che non è possibile eliminare, ed è un rischio legato alla singola attività finanziaria.

Il modello CAPM ci permette di trovare il rendimento atteso di un titolo n come la somma tra il tasso risk-free e un premio di rischio che esprima il rischio non diversificabile. Il premio dipenderà molto da un coefficiente beta che misura la reattività del rendimento di un titolo ai movimenti del mercato. Tanto maggiore è il coefficiente beta, tanto maggiore sarà il rendimento atteso dell’attività n, perchè possiede un maggior grado di rischio non diversificabile. Un investitore esigerà quindi un rendimento atteso più elevato per detenere un’attività finanziaria più rischiosa.

Metriche per la valutazione di strategie

Per valutare il livello di performance di una strategia di trading, esistono diversi indici, tra i quali: Sharpe ratio, Sortino ratio, Calmar ratio.

SHARPE RATIO

È uno dei più comuni indicatori statistici utilizzati in statistica finanziaria.Utile per confrontare l’efficienza di strumenti finanziari omogenei, l’indice di Sharpe misura il rapporto tra il maggior rendimento di un fondo rispetto al rendimento di un prodotto finanziario senza rischio e la sua volatilità.


Esso è tanto più elevato quanto un maggior rendimento in un determinato periodo considerato è ottenuto con minor rischiosità. Più alto è l’indice di Sharpe, maggiore è l’abilità del gestore nell’ottimizzare il rapporto rendimento-rischio.

Più in dettaglio, esprime il rendimento di un portafoglio titoli, al netto del rendimento non rischioso (in inglese riskfree rate), normalmente inteso come il tasso d’interesse di prestiti statali AAA a breve scadenza, in rapporto al rischio (volatilità, deviazione standard) del portafoglio stesso.

La sua formula è data da:

, dove:

rP  è il rendimento del portafoglio;

σP la sua deviazione standard o volatilità;

rf è il tasso d’interesse privo di rischio;

Risulta quindi evidente come l’indice di Sharpe individui il maggiore (o minore) rendimento registrato dal fondo rispetto all’investimento privo di rischio rapportandolo al rischio espresso dalla deviazione standard. Più è alto l’indice di Sharpe, migliore risulta la performance storica del fondo per il rischio e quindi l’efficienza della gestione.

SORTINO RATIO


L’indice di Sortino, introdotto dall’economista Frank A. Sortino è un indicatore di risk-adjusted performance che misura il rendimento aggiuntivo di un certo portafoglio rispetto al tasso di rendimento minimo accettabile ( MAR, minimum accettable return) o rispetto al tasso risk free, includendo la possibilità di conseguire una differenza di segno negativo.
Mentre l’indice di Sharpe viene utilizzato per classificare differenti strumenti finanziari , l’indice di Sortino consente di discriminare due strumenti finanziari che hanno un vicino indice di Sharpe. Tale distinzione si basa sulla diverso concetto di rischio utilizzato dai due indicatori.

La formula dell’indice di Sortino è data da:

5  



dove:
rP  è il tasso degli investimenti privi di rischio.
rf è il “rendimento obiettivo” dell’investimento.
DSR è il Downside Risk

CALMAR RATIO
Prende nome dal CALifornia Management Account Reports e viene definito come il rapporto tra il rendimento medio annuo degli ultimi 36 mesi e il massimo drawdown mensile degli ultimi 36 mesi.
In formule, abbiamo:

CR = r36  / MaxDrawdown36 



Order matching del PNL

Il calcolo del PNL necessita di un ordinamento ben preciso dei dati, ovvero delle entrate e delle uscite. Tuttavia, i vari ordinamenti possibili da utilizzare portano ugualmente allo stesso risultato del PNL.
Di seguito, elenchiamo i criteri di ordinamento più utilizzati:
  • FIRST-IN FIRST-OUT: le poste in entrata e in uscita caratteristiche degli acquisti e delle vendite vengono ordinate secondo un ordine cronologico crescente, in tal modo il match avverrà tra la prima posta di acquisto e la prima di vendita, e così via.
  • METODO DEL COSTO MEDIO: secondo questo metodo viene calcolato un prezzo medio per gli ordini di acquisto e un prezzo medio per gli ordini di vendita (ponderato per le quantità), prezzi che verranno poi usati per il matching.
  • HIGHEST-IN FIRST OUT: come suggerisce il nome, vengono matchati gli ordini di acquisto dal valore più elevato con le vendite avvenute prima in termini cronologici.
  • LAST-IN FIRST-OUT: in questo caso gli ordini vengono associati in modo inverso, viene infatti associato il primo ordine di vendità con l'ultimo ordine di acquisto. 

Il moto browniano geometrico

Il moto browniano geometrico (detto anche moto browniano esponenziale) è un processo stocastico definito nel continuo in cui il logaritmo della variabile aleatoria nel tempo segue un moto browniano.

Tale processo assume particolare rilevanza in ambito finanziario, in particolare nel calcolo del prezzo in quanto nel modello di Black-Scholes-Merton viene ipotizzato che il prezzo dell'azione sottostante segua un tale processo. Il moto browniano geometrico soddisfa la seguente equazione differenziale stocastica:
{\displaystyle \ dS_{t}=\mu S_{t}dt+\sigma S_{t}dW_{t}}
dove Wt   è un moto browniano standard mentre µ, il drift percentuale istantaneo, e σ, la volatilità percentuale istantanea, sono costanti reali.

In Visual Basic è possibile implementare la generazione di un moto browniano geometrico, tramite il seguente codice:

Imports System.IO
Public Class Form1Public ListaOsservazioniBid As List(Of osservazioneprezzo)
Public ListaOsservazioniAsk As List(Of osservazioneprezzo)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim PrezzoIniziale As Decimal = 1000
Dim DataIniziale As Date = Now
Dim Tick As Decimal = 1
      Dim RandB As New Random()
      Dim RandB As New Random()
      Dim IntervalloT As New TimeSpan(0, 0, 0, 5, 0)
      Dim PrezzoCorrente As Decimal = PrezzoIniziale
      Dim TempoCorrente As Date = DataIniziale
ListaOsservazioniBid = New List(Of osservazioneprezzo)
ListaOsservazioniAsk = New List(Of osservazioneprezzo)
Do            Dim ossbid As New osservazioneprezzo
With ossbid
                    .istante = TempoCorrente
.prezzo = PrezzoCorrente
            End With            ListaOsservazioniBid.Add(ossbid)
Dim ossask As New osservazioneprezzo
            With ossask                    .istante = TempoCorrente
.prezzo = PrezzoCorrente + RandS.Next(1, 10)
            End With            ListaOsservazioniAsk.Add(ossask)
            Dim u1 As Decimal = RandB.NextDouble()
            Dim u2 As Decimal = RandB.NextDouble()
            Dim ossinc As Double            Dim ossinc2 As Double‘ Moto browniano
ossinc = Math.Sqrt (-2 * Math.Log(u1)) * Math.Cos(2 * 3.14 * u2)
‘ Moto browniano geometrico
ossinc2 = Math.Exp(ossinc – u1/2)
            If RandB.NextDouble <= 0.5 Then
PrezzoCorrente = PrezzoCorrente + ossinc2
            Else
PrezzoCorrente = PrezzoCorrente – ossinc2
            End If
TempoCorrente = TempoCorrente + IntervalloT
            If (TempoCorrente – DataIniziale).TotalHours > 24 Then
                  Exit Do
            End If
     Loop
End Class

Risultati immagini per moto browniano geometrico

Metodi di calcolo del PNL per una sequenza arbitraria di ordini

Il Profit and Loss account (o PNL) è una delle tre parti del bilancio di un'impresa, insieme allo stato patrimoniale e alla nota integrativa, che contiene il rendiconto finanziario dell'impresa relativo ad un determinato periodo di tempo, e corrisponde a una stima della redditività dell'impresa. 
In modo analogo, può essere applicato alle strategie di trading, andando a rappresentare il risultato finale o parziale (profitto o perdita) della strategia.

Il calcolo del P&L ha bisogno di alcune informazioni, descritte qui sotto.


  • Posizione: totale acquistato (buy) – totale venduto (sell);
  • Prezzo di acquisto (più commissioni);
  • Prezzo di vendita (più commissioni);
  • Prezzo teorico di uscita fissato a priori, anche detto Theoretical Exit Price;
  • (prezzo di acquisto + commissioni)/posizione, chiamato Average Price.



  • P&L-realizzato
    Profitto o perdita concretizzatosi in seguito alla compravendita di un titolo (Profitti realizzati + Perdite realizzate) ed è dato da:

    P&L-realizzato = (Prezzo di vendita – Prezzo di acquisto) * Quantità

    P&L-irrealizzato
    Consiste nel P&L delle posizioni ancora aperte ed è definito in questo modo:
    P&L-irrealizzato = (Theoretical Exit Price – Average Price) * Posizione

    Il P&L-totale è caratterizzato dalla somma del P&L-realizzato e del P&L-irrealizzato.

    P&L-totale = P&L-realizzato + P&L-irrealizzato

    Il resampling

    Con il termine "resampling" si intende la pratica con la quale si ricampionano i dati iniziali per eliminare problemi dovuti alla numerosità elevata dei dati ottenuti.


    Nell'analisi dei dati storici dei prezzi di mercato, la rappresentazione completa dei dati renderebbe il grafico difficilmente interpretabile. I software di analisi di dati finanziari altro non fanno che ricampionare l'enorme massa di dati iniziali, eliminando parte del dataset iniziale seguendo un algoritmo, in modo tale da mantenere in maniera piuttosto precisa inalterato il significato dei dati, rendendoli al contempo più facilmente interpretabili. 

    Esistono vari metodi di campionamento; di seguito ne elenchiamo alcuni.


    Bootstrap
    Metodo che genera nuovi campioni attraverso sostituzioni nel campione originale con l'obiettivo di stimare la distribuzione campionaria di uno stimatore. Viene utilizzato per stimare intervalli di confidenza e deviazioni standard della popolazione.

    Jackknife
    Metodo usato prevalentemente in inferenza statistica per calcolare la stima della distorsione della deviazione standard di una statistica a partire da un campione casuale. E' caratterizzato da una ripetizione delle stime tenendo fuori un'osservazione alla volta dal campione.

    Test di permutazione
    Test per la significatività statistica in cui la distribuzione della statistica test sotto l’ipotesi nulla è ottenuta attraverso il calcolo di tutti i possibili valori della statistica test in base ai riordinamenti delle etichette sui dati osservati.

    Cross-validation
    Metodo statistico utilizzato per validare un modello di previsione. Caratterizzato dalla suddivisione dei dati in due tipi di sottoinsiemi: il training set, per la costruzione del modello; il validation set da confrontare con le previsioni del modello. In questo modo si dà una misura dell’accuratezza delle previsioni.