LEGO LE MIBO 020 – OGGI PARLIAMO DI GRECHE E DI PRICING
giugno 2021
Qui Diana c’entra poco, se non per il fatto che era greca, ma è un’altra la Greca di cui ci interessiamo oggi.
Si fa un gran parlare di “pricing delle Opzioni” nei Siti di borsa tanto che “delta, rho, theta …” sembrano concetti quasi popolari ma, a ben guardare, pare che ci siano lacune in abbondanza. Già: è un po' come quando i nostri politici dicono in fretta “Next Generation EU” che, guarda caso, quando lo traduci al volo sembra “Nuova Generazione PER TE” nel senso che la pronuncia ‘eju’ di “Europa Unita” è quasi la stessa di “Te”.
Ecco allora che faremo un passo indietro per svelare uno dei concetti più ostici del PRICING delle Opzioni che, a ben guardare, non è poi così complicato: basta solo seguirlo con semplicità e lo faremo sviluppando il codice VBA corrispondente.
Il ragionamento fondamentale del PRICING DELLE OPZIONI nasce da questa semplice domanda: Se è vero che la quotazione di un titolo dell’MTA (Mercato Telematico Azionario) avviene abbastanza semplicemente attraverso un raggiunto compromesso tra domanda e offerta in fase d'ASTA di Apertura, ben diverso e molto più complesso è quotare una SCOMMESSA DI CALL E DI PUT.
Esatto: non è certo il caso di sentirsi in imbarazzo a chiamara 'scommessa' una Opzione ... e perché mai? E’ a tutti gli effetti una scommessa derivante da equazioni e calcoli vari.
Dunque, la domanda COME SI FACCIA A QUOTARE UNA SCOMMESSA A FRONTE DELLE 3 VARIABILI “Tempo, Spazio, Volatilità” fu rivolta molto seriamente a più di un economista e di un matematico già a partire dagli anni 50 del secolo scorso.
Ripeto: quotare un titolo Stellantis è relativamente semplice mentre quotare una scommessa non è per niente una passeggiata!
Ai matematici fu chiesto:
Dati:
- i giorni alla scadenza (tempo)
- la distanza tra il valore dell’Indice di Borsa attuale e talune soglie di prezzo (spazio)
- la ‘pressione’ del mercato (volatilità)
ci dovete trovare IL PREZZO quale risultato di una formula.
Non vi annoio certamente a ricordarvi che la soluzione viene dalla triade Black Scholes Merton che potete ripassare qui:
https://www.francescocaranti.net/opzioni-di-borsa-la-formula-di-black-scholes-excel
I tre scienziati si portarono a casa un bel Nobel per l’economia ma siccome voi sapete che a me piace semplificare, ecco che vi ribalto il problema con una domanda: quale delle tre variabili (tempo, spazio, volatilità) è la più fumosa, la più impalpabile, cioè la più difficilmente esprimibile ?
Beh, vediamo:
- Il tempo non lo posso di certo cambiare: quelli sono e quelli restano i giorni di distanza tra il momento in cui faccio l’operazione e i giorni alla scadenza
- Lo spazio neppure: tra l’indice di borsa e lo strike, i punti_indice di differenza son quelli
- Ok, abbiamo capito! La chiave del ragionamento è la volatilità. Ma è proprio questa la componente più complessa, più volubile, più odiosa. E mentre sul tempo e lo spazio non si può intervenire, su questa sì che ‘qualcuno’ può agire … non certo io (magari!) ... signore e signori, vi presento i Market Maker
Che fanno? Ma sì: è un po' come quando i tranvieri spingono forte la manetta sulle rotaie di Milano e il bestione schizza via come un siluro.
Naturalmente, ‘a discrezione del tranviere’, non appena torna la calma, quella leva rientra nella sua posizione normale.
Questo spiega come in momenti ‘fiacchi’ una Opzione possa valere 500 e due ore dopo (es: uno choc inaspettato vada a 700.
Oh! Naturalmente non dobbiamo pensare che i Market Maker in queste occasioni adottino comportamenti disdicevoli tanto per nuocere “noi piccolini” ma semplicemente perché nella quotidiana lotta della sopravvivenza anche loro si debbono difendere dato che sono i primi a rischiare con quantità importanti.
Allora: ALT! Fatemi capire: io ho un portafoglio fatto di X call e di Y put che, valorizzato nel momento ‘fiacco’ vale 1000 euro ... poi potrebbe succedere un patatrac e il mio portafoglio da 1000 euro si riduce a 800.
Per adesso so che POICHE’ IL TEMPO E LO SPAZIO NON SONO CAMBIATI, ovvio che a cambiare è stata solo la VOLATILITA’: qualcuno ha spostato la manetta del tram.
Ecco allora che questa MANETTA è importantissima in termini di probabilità perché se è vero che il mio portafoglio è passato da 1000 a 800 euro, ciò significa che la PROBABILITA’ CHE TUTTO IL MIO PORTAFOGLIO DI OPZIONI COMBINATE IMPOSTATO IN UN CERTO MODO E’ ANCH’ESSA CAMBIATA A MIO SFAVORE.
E’ chiaro? Riassumo: SE A UN CERTO TEMPO 'T' IL MIO PORTAFOGLIO SI DEPREZZA A PARITA’ DI TEMPO E DI SPAZIO, ALLORA ANCHE LA PROBABILITA’ GLOBALE CHE IL MIO PORTAFOGLIO POSSA CADERE IN THE MONEY CALERA' DI CONSEGUENZA.
Nota
Vale questo lemma di sintesi: La volatilità del mercato è direttamente proporzionale alla probabilità matematica
Benissimo! Avete visto come, attraverso la componente della VOLATILITA’ il nostro ragionamento sia diventato di natura PROBABILISTICA, cioè si possa esprimere in termini di probabilità.
Ed ecco la definizione: LA PROBABILITA’ DI UN PORTAFOGLIO OPZIONI COINCIDE CON IL SUO “DELTA”.
Ci giro ancora attorno: se a parità di Tempo e di Spazio il tuo portafoglio ha perso valore è perché, per il variare della VOLATILITA’ IMPLICITA, il tuo DELTA COMPLESSIVO DI TUTTO IL PORTAFOGLIO SI E’ ABBASSATO.
Perfetto: abbiamo capito!
L’estrema sintesi del nostro ragionamento è:
- se avevo in mano un portafoglio Opzioni con Delta complessivo = zero (beato me!)
- ma cade il Governo
allora succede che qualcuno addetto ai lavori ha mosso la manetta della Volatilità Implicita.
Ciò comporta che il Delta DI CIASCUNA SINGOLA OPZIONE E’ CAMBIATO E DI CONSEGUENZA LO E' TUTTO IL MIO PORTAFOGLIO.
Bingo: allora, sai che si fa?
Ma certo! Conoscendo i SINGOLI DELTA di ciascuna Opzione potrò INSERIRE / VARIARE / ANNULLARE questa o quella Opzione in modo da raddrizzare il Delta complessivo portandolo il più possibile verso il valore tendenziale ZERO. Fantastico: di certo la prima greca da conoscere è sicuramente DELTA.
Ma siccome quando hai in mano un portafoglio complesso di più Opzioni le cose diventano difficili, per oggi ci basterà vedere come si calcola il Delta di una sola Opzione conoscendo le 3 variabili.
Lo vediamo subito scoprendo il codice VBA completo di tutte le greche possibili.
State tranquilli: non dovrete impararle a memoria. Per il momento volevo solo annunciare che questo codice esiste.
Per i commenti ci sentiamo la prossima volta.
'Author : Francesco Caranti 2021
'Equazione di Black Scholes - Calcolo Greche
Function dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
dUno = (Log(Sottostante / Strike) + (Interessi - Dividendi + 0.5 * VolaImpl ^ 2) * Tempo) / (VolaImpl * (Sqr(Tempo)))
End Function
Function NdUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
NdUno = Exp(-(dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi) ^ 2) / 2) / (Sqr(2 * 3.14159265358979))
End Function
Function dDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
dDue = dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi) - VolaImpl * Sqr(Tempo)
End Function
Function NdDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
NdDue = Application.NormSDist(dDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi))
End Function
Function CallOption(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
CallOption = Exp(-Dividendi * Tempo) * Sottostante * Application.NormSDist(dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)) - Strike * Exp(-Interessi * Tempo) * Application.NormSDist(dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi) - VolaImpl * Sqr(Tempo))
End Function
Function PutOption(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
PutOption = Strike * Exp(-Interessi * Tempo) * Application.NormSDist(-dDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)) - Exp(-Dividendi * Tempo) * Sottostante * Application.NormSDist(-dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi))
End Function
Function CallDelta(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
CallDelta = Application.NormSDist(dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi))
End Function
Function PutDelta(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
PutDelta = Application.NormSDist(dUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)) - 1
End Function
Function CallTheta(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
CT = -(Sottostante * VolaImpl * NdUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)) / (2 * Sqr(Tempo)) - Interessi * Strike * Exp(-Interessi * (Tempo)) * NdDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
CallTheta = CT / 365
End Function
Function Gamma_zio(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
Gamma_zio = NdUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi) / (Sottostante * (VolaImpl * Sqr(Tempo)))
End Function
Function Vega(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
Vega = 0.01 * Sottostante * Sqr(Tempo) * NdUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
End Function
Function PutTheta(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
PT = -(Sottostante * VolaImpl * NdUno(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)) / (2 * Sqr(Tempo)) + Interessi * Strike * Exp(-Interessi * (Tempo)) * (1 - NdDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi))
PutTheta = PT / 365
End Function
Function CallRho(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
CallRho = 0.01 * Strike * Tempo * Exp(-Interessi * Tempo) * Application.NormSDist(dDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi))
End Function
Function PutRho(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)
PutRho = -0.01 * Strike * Tempo * Exp(-Interessi * Tempo) * (1 - Application.NormSDist(dDue(Sottostante, Strike, Tempo, Interessi, VolaImpl, Dividendi)))
End Function
Function VolaCall(Sottostante, Strike, Tempo, Interessi, Target, Dividendi)
High = 5
Low = 0
Do While (High - Low) > 0.0001
If CallOption(Sottostante, Strike, Tempo, Interessi, (High + Low) / 2, Dividendi) > Target Then
High = (High + Low) / 2
Else: Low = (High + Low) / 2
End If
Loop
VolaCall = (High + Low) / 2
End Function
Function VolaPut(Sottostante, Strike, Tempo, Interessi, Target, Dividendi)
High = 5
Low = 0
Do While (High - Low) > 0.0001
If PutOption(Sottostante, Strike, Tempo, Interessi, (High + Low) / 2, Dividendi) > Target Then
High = (High + Low) / 2
Else: Low = (High + Low) / 2
End If
Loop
VolaPut = (High + Low) / 2
End Function
Benissimo!
Prima ancora di inserire queste formule VBA nel nostro pc, abbiamo capito una cosa fondamentale: OGNI UTENTE EXCEL PUO’ CREARE QUALSIASI FUNZIONE PERSONALE, INSERIRLA NELL’ELENCO DELLE FUNZIONI DEL PROPRIO EXCEL E, infine, UTLIZZARLA IN FUTURO COME GLI PARE E PIACE.
Ed è proprio ciò che faremo nel prossimo intervento.
Appuntamento a MARTEDI' 8 giugno (saltiamo il prossimo venerdì).
Francesco Caranti