• Non ci sono risultati.

CAPITOLO 4

N/A
N/A
Protected

Academic year: 2021

Condividi "CAPITOLO 4"

Copied!
30
0
0

Testo completo

(1)

CAPITOLO 4

L’IMPLEMENTAZIONE IN MATLAB® DELLA STIMA DEL CVA PER CONTRATTI DI INTEREST RATE SWAPS CON DIVERSE CONTROPARTI

4.1 Premessa

L’intento di questo quarto ed ultimo capitolo è quello di andare a mostrare come il processo di stima del Credit Valuation Adjustment presentato nel capitolo precedente possa essere efficientemente implementato in MATLAB® (abbreviazione di Matrix Laboratory), ossia un ambiente per il calcolo numerico e l’analisi statistica scritto in C che comprende anche l’omonimo linguaggio di programmazione creato dalla MathWorks, mettendone anche in evidenza aspetti positivi e negativi.

Vedremo che l’utilità di MATLAB® risiede nel fatto che esso rende semplici e veloci calcoli che risulterebbero invece complessi nel loro svolgimento e dispendiosi a livello di tempi. Prezzare il rischio di controparte, ossia calcolare il CVA, per strumenti derivati risulta complesso a causa del fatto che questi possono assumere valori sia positivi che negativi, che dipendono dall’andamento delle condizioni di mercato e dei sottostanti. Infatti, come già abbiamo avuto modo di dire nel corso di questo lavoro, l’esposizione creata da un derivato è bilaterale e incerta, a differenza di quella generata da un bond che è unilaterale e relativamente certa. Il processo di stima del CVA presentato nel terzo capitolo risulta anche costoso in termini di tempi, in virtù dell’elevato numero di simulazioni che richiede. Noi andremo a mostrare come il calcolo possa essere effettuato per un portafoglio di trentasei interest rate swaps di tipo vanilla con cinque diverse controparti, ma pensiamo a quanto possa essere cruciale il ruolo del sistema informatico all’interno di una banca, dove il numero degli strumenti finanziari da prezzare è di gran lunga più elevato. A seconda della quantità di questi strumenti, il tempo computazionale per un motore basato su una tecnica che imposta un numero significativo di simulazioni (come quella Monte Carlo) può addirittura richiedere l’impiego di numerose macchine in parallelo.

La nostra implementazione numerica verrà effettuata sulla base di uno script MATLAB®82

pubblicato dalla MathWorks sul proprio sito, al seguente link:

http://it.mathworks.com/help/fininst/examples/counterparty-credit-risk-and-cva.html. Il codice MATLAB® utilizzato si trova negli allegati del presente elaborato.

(2)

Poniamo l’attenzione sul fatto che, a differenza di quanto accade nell’esempio presente al link di cui sopra, utilizzeremo dati reali e non fittizi, ottenuti da un’importante banca italiana, che renderanno il processo di stima molto più realistico e veritiero e che daranno anche un’idea del reale ordine di grandezza del CVA e della sua rilevanza rispetto all’esposizione attesa media. Trattandosi di dati sensibili, non disponibili pubblicamente, ci riferiremo alla banca che ce li ha resi disponibili con il termine di “Banca X”.

Precisiamo anche che, per poter rendere questo processo di calcolo il più comprensibile possibile, abbiamo fatto alcune assunzioni fondamentali, di seguito elencate:

1) il calcolo del CVA viene effettuato dal punto di vista della Banca X, che vede le sue controparti come soggetti rischiosi ma considera se stessa come priva di rischio di default. Ciò significa andare a calcolare il CVA cosiddetto “unilaterale” relativo alla Banca X, ignorando il DVA che include il suo rischio di insolvenza. Sotto quest’assunzione, la valutazione del rischio di controparte potrà essere simmetrica o asimmetrica per la Banca X e le sue controparti. La valutazione sarà simmetrica, ovvero il prezzo totale delle posizioni (incluso il rischio di controparte) calcolato dalla Banca X sarà esattamente pari all’opposto del prezzo calcolato da ciascuna controparte, solo se queste riconosceranno il fatto che la Banca X sia default-free. Infatti, la Banca X individuerà un aggiustamento negativo al prezzo risk-free delle proprie posizioni e quindi sottrarrà il CVA, mentre le controparti effettueranno un aggiustamento positivo, opposto a quello calcolato dalla Banca X, ossia aggiungeranno il proprio DVA per compensare quest’ultima del loro rischio di insolvenza. Quindi, avremo:

𝑃𝑟𝑒𝑧𝑧𝑜𝐵𝑎𝑛𝑐𝑎 = 𝑃𝑟𝑒𝑧𝑧𝑜 𝑟𝑖𝑠𝑘 𝑓𝑟𝑒𝑒 − 𝐶𝑉𝐴𝐵𝑎𝑛𝑐𝑎

𝑃𝑟𝑒𝑧𝑧𝑜𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒= −𝑃𝑟𝑒𝑧𝑧𝑜 𝑟𝑖𝑠𝑘 𝑓𝑟𝑒𝑒 + 𝐷𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒

dove 𝑃𝑟𝑒𝑧𝑧𝑜𝐵𝑎𝑛𝑐𝑎 = −𝑃𝑟𝑒𝑧𝑧𝑜𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒 poiché 𝐶𝑉𝐴𝐵𝑎𝑛𝑐𝑎 = 𝐷𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒.

Il 𝐶𝑉𝐴𝐵𝑎𝑛𝑐𝑎, che è ciò che noi andremo a calcolare, è unilaterale perché la Banca X è considerata default-free e quindi la controparte, dal proprio punto di vista, non dovrà fare alcun aggiustamento per il rischio di insolvenza della banca stessa, ossia 𝐶𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒 = 0.

(3)

Di conseguenza,

𝐷𝑉𝐴𝐵𝑎𝑛𝑐𝑎 = 𝐶𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒 = 0.

Nel caso in cui le controparti non accettino che la Banca X venga considerata come default-free, la valutazione sarà asimmetrica, ovvero i prezzi calcolati dalla Banca X e dalle controparti saranno discordanti. Infatti, se le controparti non riconosceranno la Banca X come priva di rischio di default, le chiederanno un compenso che la Banca X ignorerà nella propria valutazione. In questo caso avremo:

𝑃𝑟𝑒𝑧𝑧𝑜𝐵𝑎𝑛𝑐𝑎 = 𝑃𝑟𝑒𝑧𝑧𝑜 𝑟𝑖𝑠𝑘 𝑓𝑟𝑒𝑒 − 𝐶𝑉𝐴𝐵𝑎𝑛𝑐𝑎

con 𝐷𝑉𝐴𝐵𝑎𝑛𝑐𝑎 = 0, come nel caso precedente;

𝑃𝑟𝑒𝑧𝑧𝑜𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒 = −𝑃𝑟𝑒𝑧𝑧𝑜 𝑟𝑖𝑠𝑘 𝑓𝑟𝑒𝑒 + 𝐷𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒− 𝐶𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒 con 𝐶𝑉𝐴𝐶𝑜𝑛𝑡𝑟𝑜𝑝𝑎𝑟𝑡𝑒 ≠ 0, diversamente dal caso precedente.

I due prezzi non saranno quindi l’uno l’opposto dell’altro. L’unico caso in cui si potrà avere un accordo sul prezzo è quello in cui anche la Banca X riconosca il fatto di non essere priva di rischio. A quel punto, infatti, sia la Banca che ciascuna controparte registreranno un CVA positivo da sottrarre e un DVA positivo da aggiungere al prezzo risk-free della transazione; il CVA di una parte sarà il DVA dell’altra e viceversa83. 2) L’esposizione verso una controparte e la probabilità di default della stessa sono

considerate indipendenti. Ciò significa ipotizzare l’assenza di wrong-way risk.

3) La valutazione degli strumenti in portafoglio è risk-free, dal momento che l’ambiente per il calcolo del CVA è considerato come neutrale al rischio.

4) La Banca X ha stipulato accordi di compensazione (netting agreements) con tutte le controparti.

5) La Banca X non ha stipulato accordi di collateralizzazione (collateral agreements) con alcuna controparte. In questo modo il CVA risulterà rilevante.

(4)

4.2 Le fasi dell’implementazione numerica 4.2.1 L’importazione dei dati

Il primo passo del processo di calcolo del CVA consiste nell’importazione dei dati in MATLAB®, che rappresenta in un certo senso la fase “zero”.

I dati da noi utilizzati riguardano 36 contratti di interest rate swaps in essere alla data del 20 giugno 2016 (Settle), stipulati dalla Banca X con cinque diverse controparti.

Gli interest rate swaps (IRS) sono contratti in cui due controparti si scambiano pagamenti periodici di interessi, calcolati su una somma di denaro, detta capitale nozionale di riferimento (notional principal amount), per un periodo di tempo predefinito pari alla durata del contratto, e cioè fino alla scadenza (maturity date o termination date) del contratto stesso. La tipologia di IRS che noi prendiamo in considerazione è quella denominata “plain vanilla”, che presenta le seguenti caratteristiche:

 la durata dello swap è un numero intero di anni;

 uno dei due flussi di pagamenti è basato su un tasso di interesse fisso, mentre l’altro è indicizzato ad un tasso di interesse variabile;

 il capitale nozionale resta costante per tutta la vita del contratto.

Nella prassi si definisce acquirente dello swap chi corrisponde i pagamenti a tasso fisso e riceve quelli a tasso variabile; si suole anche dire che tale soggetto assume una posizione lunga (long swap position). Simmetricamente, venditore è colui che in cambio del tasso variabile riceve il tasso fisso e si dice che assume una posizione corta (short swap position). Il flusso dei pagamenti di interessi a tasso fisso è detto “gamba fissa”; il controvalore di ciascun pagamento è dato dal prodotto del capitale nozionale per il tasso fisso contrattualmente stabilito. Il flusso dei pagamenti a tasso variabile è detto “gamba variabile”; il relativo controvalore unitario è il risultato del prodotto del capitale nozionale per il tasso variabile fissato alla data di rilevazione indicata nel contratto (reset date). Le variazioni del tasso variabile, rispetto ai livelli ipotizzati al momento della conclusione del contratto, determinano il profilo di rischio/rendimento del plain vanilla swap. In particolare, se il tasso variabile risulta superiore alle aspettative, l’acquirente dello swap, cioè colui che è obbligato a pagare il tasso fisso, matura un profitto (in quanto, fermo restando i pagamenti a tasso fisso cui è obbligato, riceverà pagamenti a tasso variabile di importo superiore a quanto previsto) ed il venditore una perdita, mentre se il tasso variabile scende è il venditore a conseguire un profitto84.

(5)

Tabella 4.1 I dati degli interest rate swaps stipulati dalla Banca X con 5 diverse controparti alla data del 20 giugno 2016.

Fonte: Banca “X”

Gli elementi fondamentali indicati nei contratti di IRS che interessano per il calcolo del CVA sono inseriti in un primo foglio (“Swap Portfolio”) di un file excel (swap-portfolio.xlsx), come mostrato nella Tabella 4.1. Essi riguardano:

 CounterpartyID, cioè il numero con cui viene identificata una controparte. Abbiamo cinque banche: 1= BNP Paribas; 2= Goldman Sachs; 3= Deutsche Bank; 4= JP Morgan; 5= Barclays.

 NettingID, cioè il numero che indica il netting set a cui appartiene un determinato contratto. Nel nostro caso, ogni controparte ha un unico netting set, indicato con lo stesso numero che identifica la controparte, che copre tutti i contratti con essa stipulati. Nessun contratto risulta scoperto.

 Principal, che rappresenta il capitale nozionale di riferimento di ogni contratto. Esso non viene scambiato tra le parti, ma serve unicamente per calcolare gli interessi. La valuta è l’euro.

principalicategorie_prodottiderivati.html#5.

CounterpartyID NettingID Principal Maturity LegType LegRateReceiving LegRatePaying LatestFloatingRate Period

1 1 50000000 737901 0 61 0,0375 0,0036 4 2 2 50000000 738414 0 406 0,021 0,038 4 3 3 20000000 737684 0 555 0,0235 0,0529 4 3 3 75000000 739144 1 0,04725 503 0,04765 4 3 3 25000000 737684 1 0,0458 560 0,0534 4 1 1 20000000 737684 1 0,0476 556 0,05295 4 2 2 30000000 737320 1 0,02 246 0,022 4 2 2 30000000 740240 0 413 0,031 0,03865 4 1 1 20000000 738414 1 0,0244 312 0,0286 4 2 2 40000000 740240 0 383 0,031 0,03565 4 2 2 15000000 736953 0 315 0,021 0,0289 4 4 4 50000000 740240 1 0,03365 380 0,0354 4 1 1 20000000 739144 0 350 0,026 0,0324 4 4 4 50000000 740240 1 0,033625 390 0,0364 4 4 4 50000000 740240 0 390 0,031 0,0364 4 3 3 28000000 739144 0 355 0,026 0,0329 4 3 3 5000000 738414 1 0,0232 285 0,0259 4 3 3 28000000 737320 0 235 0,017 0,0209 4 5 5 20000000 737684 0 420 0,031 0,0394 4 5 5 15000000 737684 0 420 0,031 0,0394 4 4 4 40000000 738049 1 0,0289 380 0,0354 4 4 4 40000000 738049 0 380 0,0235 0,0354 4 3 3 47000000 739144 0 383 0,0235 0,0357 4 3 3 49000000 739144 0 383 0,0235 0,0357 4 4 4 10000000 739875 0 410 0,0255 0,0384 4 4 4 14000000 739823 0 575 0,042 0,055 4 1 1 450000000 736572 0 39 0,0425 0,00125 4 5 5 26250000 736953 1 0,0273 340 0,0314 4 3 3 25000000 737684 0 356 0,0235 0,033 4 3 3 30000000 737684 0 356 0,0235 0,033 4 1 1 450000000 736572 1 0,0425 0 -0,0026 4 4 4 18000000 739144 0 385 0,026 0,035875 4 2 2 25000000 740240 0 413 0,031 0,0387 4 2 2 25000000 740240 0 413 0,031 0,0387 4 2 2 20000000 740240 0 410 0,031 0,0384 4 3 3 45000000 738414 0 324 0,021 0,029825 4

(6)

 Maturity, ossia la scadenza di ogni contratto. Tutte le date sono state convertite in numeri seriali tramite la funzione datenum. La scadenza più breve è il 30 agosto 2016, quella più lunga il 15 settembre 2026.

 LegType, che per ogni contratto indica se la Banca X riceve il tasso fisso e quindi è venditore dell’IRS (1) oppure riceve quello variabile e quindi è acquirente dell’IRS (0).

 LegRateReceiving e LegRatePaying, che rappresentano rispettivamente il tasso che la Banca X riceve e quello che paga. Se il tasso che riceve o paga è fisso, ne viene indicato il livello annuale con un numero decimale; se è variabile, viene indicato lo spread in punti base che viene applicato all’indice variabile di riferimento. In questo caso l’indice di riferimento è l’Euribor a 3 mesi per tutti i contratti.

 LatestFloatingRate, ossia il tasso variabile registrato all’ultima data di reset prima della data di valutazione (20 giugno 2016), che sarà utilizzato per calcolare il prossimo pagamento variabile.

 Period, ossia il numero di pagamenti annuali per ogni swap. Nel nostro caso è pari a 4 per tutti i contratti poiché i pagamenti sono trimestrali.

Tutti questi dati serviranno per poter prezzare i vari strumenti e calcolare l’esposizione della Banca X nei confronti delle varie controparti.

Essi vengono caricati in MATLAB® dal file excel tramite la funzione readtable, che crea una tabella (swapData) leggendo i dati del file disposti in colonne. Tramite la funzione struct viene anche creata una struttura (swaps) che recupera i dati dalla tabella importata. Essa, oltre agli otto campi relativi ai vari IRS elencati sopra, ne racchiude altri due:

 FloatingResetDates, che viene preparato per contenere le date a cui i tassi variabili di ogni strumento vengono fissati per il prossimo periodo di interesse, le quali verranno calcolate successivamente;

 LegReset, che indica la frequenza annuale con cui i tassi vengono aggiustati per ogni swap. Nel nostro caso è pari a 4 per tutti i contratti, sia per il tasso pagato che per quello ricevuto, poiché il reset è trimestrale.

Il numero degli swaps (numSwaps), che ci servirà successivamente per impostare la dimensione di alcune matrici, è 36.

4.2.2 La simulazione

(7)

momento che abbiamo a che fare con un portafoglio di interest rate swaps, i fattori di rischio sono i tassi di interesse, ma potrebbero variare in base al portafoglio considerato. Il modello per i tassi di interesse che utilizzeremo è il modello Hull-White ad un fattore. L’input base per l’implementazione di questo modello è la struttura a termine dei tassi di interesse, denominata RateSpec, che viene creata a partire dalla curva dei tassi “zero” o “spot” alla data di valutazione. Questo tipo di curva rappresenta il rendimento a scadenza di titoli zero coupon solamente ipotetici, in quanto tali titoli non sono direttamente osservabili sul mercato per un ampio range di scadenze. I rendimenti devono quindi essere stimati dai prezzi sia di titoli senza cedola esistenti (zero coupon bond) che di titoli a cedola fissa (fixed coupon bond) tramite tecniche di bootstrap. La curva da noi utilizzata è quella stimata dalla Banca Centrale Europea per l’Area Euro, pubblicata sul proprio sito web. In particolare, questa curva viene derivata dai prezzi dei titoli dei governi centrali dell’Area Euro che hanno rating tripla-A85. Si è ritenuto opportuno avvalersi di questo tipo di curva in quanto tutti gli IRS sono valutati in euro e la Banca X è italiana. Avremmo potuto utilizzare anche l’Euribor/swap zero curve dal momento che gli IRS sono indicizzati proprio al tasso Euribor, ma in quel caso avremmo dovuto mettere in atto complesse tecniche di bootstrap per ricavare, a partire da tassi Euribor e tassi swap, i corrispondenti tassi zero coupon, le quali non interessano ai fini della tecnica di implementazione. In aggiunta, possiamo pensare che le due curve siano paragonabili, poiché i tassi interbancari e quelli sui titoli dei governi sono in un certo senso connessi tra loro.

I tassi “zero” o “spot” (ZeroRates) dell’Area Euro al 20 giugno 2016 sono rappresentati nella Tabella 4.2 per 33 diverse scadenze (Tenor), da 3 mesi fino a 30 anni.

(8)

Tabella 4.2 Tassi spot o zero dell’Area Euro al 20 giugno 2016. Maturity Spot Rate (%) Maturity Spot Rate (%) 3 months -0.558538 15 years 0.399724 6 months -0.558378 16 years 0.442863 9 months -0.563131 17 years 0.481294 1 year -0.570248 18 years 0.515677 2 years -0.592062 19 years 0.546573 3 years -0.573496 20 years 0.574459 4 years -0.512042 21 years 0.599736 5 years -0.421353 22 years 0.622742 6 years -0.316079 23 years 0.643765 7 years -0.207308 24 years 0.663045 8 years -0.102102 25 years 0.680789 9 years -0.004315 26 years 0.697171 10 years 0.084387 27 years 0.712342 11 years 0.163689 28 years 0.726430 12 years 0.234026 29 years 0.739547 13 years 0.296195 30 years 0.751790 14 years 0.351120

Fonte: Banca Centrale Europea

Graficamente, la curva è rappresentata nel Grafico 4.1, sul cui asse delle ordinate abbiamo gli ZeroRates e sul cui asse delle ascisse abbiamo le ZeroDates, ossia le date di scadenza calcolate a partire dal 20 giugno 2016 (20 settembre 2016, 20 dicembre 2016, 20 marzo 2017, 20 giugno 2017, 20 giugno 2018, 20 giugno 2019 e così via fino al 20 giugno 2046).

Grafico 4.1 Curva dei tassi zero o spot dell’Area Euro al 20 giugno 2016.

(9)

Una volta individuata la curva, è possibile creare la variabile RateSpec, che rappresenta una struttura con vari campi. La funzione che viene utilizzata in MATLAB® per la creazione di tale variabile è intenvset. Gli input richiesti da tale funzione, ossia quelle proprietà che permettono di definire la struttura RateSpec, sono i seguenti:

 'StartDates', ossia la data di inizio, che coincide con la nostra data di valutazione (20 giugno 2016);

 'EndDates', cioè le date di scadenza: 3, 6, 9 mesi e tutti gli anni da 1 a 30 a partire dal 20 giugno 2016;

 'Rates', ossia i tassi per tutte le scadenze, come rappresentati nella Tabella 4.2;

 'Compounding', cioè l’input che permette di determinare la formula per i fattori di sconto che andremo a usare, che è pari a 2;

 'Basis', ossia la base di calcolo dei giorni degli strumenti; ponendola pari a zero si considerano i giorni effettivi/giorni effettivi.

Per poter effettuare la nostra simulazione Monte Carlo è anche necessario impostarne i parametri. Poniamo ad esempio il numero di scenari di tasso di interesse simulati (numScenarios) pari a 1000. Impostiamo poi le nostre date di simulazione come date dapprima più frequenti e ravvicinate, nel futuro meno frequenti e più distanziate: ad esempio, mensili per il primo anno a partire dal 20 giugno 2016 e su base trimestrale a partire dal secondo anno fino alla scadenza più lontana tra quelle dei vari contratti. Quindi, le simulationDates cadono:

- tutti i mesi dal 20 giugno 2016 al 20 giugno 2017; - ogni tre mesi dal 20 giugno 2017 al 20 settembre 2026.

Il numero delle date di simulazione (numDates) è 50, che ci servirà successivamente per impostare la dimensione di alcune matrici.

Un’altra cosa da fare è calcolare le FloatingResetDates, per le quali era stato preparato e lasciato vuoto il campo all’interno della struttura swaps. In particolare, per ogni data di simulazione calcoliamo la precedente data di reset del tasso variabile per ogni swap.

Quello che otteniamo è una matrice 36 x 50, dove 36 è il numero degli swaps e 50 il numero delle date di simulazione. In particolare:

 tramite la funzione cfdates, che prende come input la nostra data di valutazione, la maturity ed il period, calcoliamo le date di pagamento di ogni swap. Otteniamo la matrice floatDates che ha un numero di righe pari al numero degli swaps e un numero di colonne pari al numero di date di pagamento degli swaps comprese tra la data di valutazione e la scadenza (nel nostro caso 42);

(10)

 prepariamo la matrice 36 x 50 delle FloatingResetDates;

 scorriamo gli elementi di ogni riga i della matrice FloatingResetDates partendo dall’ultimo ed eseguiamo i seguenti passi:

- poniamo la data di simulazione i-esima pari a ThisDate;

- nella matrice floatDates, poniamo tutte le date di pagamento oltre ThisDate pari a zero;

- nella matrice floatDates, per ogni riga (ossia per ogni swap) prendiamo l’ultima data di pagamento, che rappresenta la nostra FloatingResetDate. In questo modo, per ogni data di simulazione di ogni swap otteniamo la precedente data di reset che ci consentirà di fissare il tasso variabile per il prossimo periodo.

Arrivati a questo punto, possiamo impostare il modello Hull-White ad un fattore per “modellare” i tassi di interesse, per poi utilizzarlo nella generazione degli scenari. Si parla di modello “ad un fattore” perché il fattore di rischio è uno, che nel nostro caso è costituito dalla curva dei tassi “zero”. Precisiamo, però, che al posto di tale modello ne potrebbe essere utilizzato un altro qualsiasi, a seconda delle varie esigenze e del numero di fattori di rischio sottostanti ai vari contratti. Per questo, il modello Hull-White non sarà oggetto di studio approfondito: in proposito verrà fatto solo qualche cenno.

Il modello Hull-White è un modello per i tassi di interesse futuri e appartiene alla classe dei modelli per la curva dei tassi “no-arbitrage”, in cui il tasso a breve è la variabile casuale. “No-arbitrage” significa che il modello è capace di adattarsi alla struttura dei tassi di interesse corrente e che i relativi parametri sono coerenti con i prezzi dei titoli ricavati dalla curva dei tassi zero. Il primo modello descritto da John C. Hull e Alan White risale al 1990, ma è diffuso sul mercato ancora oggi. In particolare, si tratta di un modello per il tasso di interesse a breve termine, la cui dinamica è definita in un mondo neutrale al rischio in base alla seguente equazione86:

𝑑𝑟 = [𝜃(𝑡) − 𝑎𝑟]𝑑𝑡 + 𝜎𝑑𝑧 dove

 𝑑𝑟 è la variazione del tasso di interesse a breve dopo un piccolo intervallo di tempo 𝑑𝑡;

 𝑟è il tasso di interesse a breve termine;

86 J. HULL, A. WHITE, Numerical procedures for implementing term structure models I: single-factor models,

The Journal of Derivatives, Fall 1994, Vol. 2, No. 1, pagg. 7-16, in www.iijournals.com, consultato il 9 agosto 2016.

(11)

 𝑎 è il tasso di ritorno alla media (mean reversion rate). Infatti, il tasso a breve tende ad essere “attratto” verso il suo valore medio o atteso ad un tasso 𝑎;

 𝜎 è la volatilità (deviazione standard annuale) del tasso di interesse a breve termine;  𝑑𝑧 indica un processo Wiener o moto Browniano, ossia un processo normale standard.

Il modello assume che il tasso di interesse a breve termine abbia una distribuzione normale;

 𝜃(𝑡) è la funzione di deriva (drift), che determina la direzione media in cui 𝑟 si muove, definita come:

𝜃(𝑡) = 𝐹𝑡(0, 𝑡) + 𝑎𝐹(0, 𝑡) + 𝜎2

2𝑎(1 − 𝑒

−2𝑎𝑡) con:

- 𝐹(0, 𝑡): il tasso forward istantaneo al tempo 𝑡; - 𝐹𝑡(0, 𝑡): la derivate parziale di 𝐹 rispetto al tempo 𝑡.

Una volta che abbiamo simulato la traiettoria (path) del tasso a breve, generiamo l’intera curva dei tassi ad ogni data di simulazione usando la formula:

𝑅(𝑡, 𝑇) = − 1

(𝑇 − 𝑡)ln𝐴(𝑡, 𝑇) + 1

(𝑇 − 𝑡)𝐵(𝑡, 𝑇)𝑟(𝑡) dove:

 𝑅(𝑡, 𝑇) è il tasso zero al tempo 𝑡 per il periodo 𝑇 − 𝑡;  ln𝐴(𝑡, 𝑇) = ln𝑃(0,𝑇) 𝑃(0,𝑡)+ 𝐵(𝑡, 𝑇)𝐹(0, 𝑡) − 1 4𝑎3𝜎 2(𝑒−𝑎𝑇− 𝑒−𝑎𝑡)2(𝑒2𝑎𝑡− 1) con: - 𝐵(𝑡, 𝑇) =1−𝑒−𝑎(𝑇−𝑡) 𝑎 ;

- 𝑃(𝑡, 𝑇)= prezzo di uno zero coupon bond al tempo 𝑡 che paga un euro al tempo 𝑇. Ogni scenario contiene la struttura a termine dei tassi nel tempo, modellata in ciascuna delle nostre date di simulazione selezionate.

Il modello così descritto viene implementato in MATLAB® tramite la funzione HullWhite1F presente nel Financial Instrument Toolbox. In primo luogo, è necessario impostare il modello tramite la seguente riga di codice:

hw1 = HullWhite1F(RateSpec,Alpha,Sigma);

Il nostro output è l’oggetto hw1, mentre i parametri in ingresso al modello Hull-White ad un fattore presente in MATLAB® sono tre: RateSpec, Alpha e Sigma. La prima variabile è già

(12)

stata identificata precedentemente, mentre le ultime due sono i coefficienti “mean reversion” e “volatility” che devono essere determinati adeguando le previsioni del modello ai dati esistenti disponibili sul mercato. Questi due parametri vengono calcolati tramite la calibrazione del modello in modo tale che esso possa riprodurre il più fedelmente possibile i prezzi di caps e floors osservati sul mercato. In particolare, tramite la calibrazione si trovano quei parametri che minimizzano la differenza tra i prezzi previsti dal modello e quelli di mercato relativi a caps e floors87. La banca dati Thomson Reuters Eikon fornisce questi due parametri, che al 20 giugno 2016 risultano rispettivamente pari a – 0,002054 e 0,00703 per la valuta euro. Il fatto che la costante Alpha sia negativa può farci pensare al fatto che i tassi non si stiano avvicinando al loro livello medio, che oggi è negativo, ma se ne stiano allontanando. Infatti, probabilmente essi stanno cercando di tornare verso lo zero.

Una volta creato l’oggetto hw1 che specifica la curva dei tassi zero e le sue proprietà, Alpha e Sigma, utilizziamo il metodo simTermStructs dell’oggetto hw1 per simulare, per ogni scenario, la curva dei tassi di interesse futura ad ogni data di valutazione.

Prima, però, per poter rendere la nostra simulazione riproducibile è necessario impostare allo stato zero il generatore di numeri casuali, tramite la seguente riga di codice:

prevRNG = rng(0, 'twister');

dove rng (random number generation ) è la funzione che controlla la generazione dei numeri casuali, che prende come input lo stato del generatore, ossia zero, ed il tipo di generatore che vogliamo utilizzare, ad esempio Mersenne twister. Lo stato del generatore di numeri casuali verrà ripristinato dopo aver implementato la funzione simTermStructs.

Quest’ultima è una funzione che simula la curva dei tassi zero futura usando il modello Hull-White specificato nell’oggetto hw1, acquisendo in ingresso i seguenti parametri:

 nPeriods, ossia il numero dei periodi di simulazione, che è pari a 49 visto che le date di simulazione sono 50;

 nTrials, ossia il numero delle traiettorie di tassi simulate, che è pari al numero di scenari da generare (numScenarios), che avevamo impostato pari a 1000;

 deltatime, ossia la lunghezza di ogni periodo di simulazione, misurata in anni. Poiché le date di simulazione per il primo anno sono mensili, il dt dei primi 12 periodi è pari a 0,0833 (1/12) anni. Il dt dei periodi successivi è invece 0,25 (1/4) anni, in quanto le date di simulazione hanno una frequenza trimestrale.

(13)

L’output (scenarios) che otteniamo è una matrice di strutture a termine dei tassi zero di dimensioni nPeriods+1 x nTenors x nTrials, dove nTenors è il numero di scadenze della curva zero. Nel nostro caso, la matrice ha dunque dimensione 50 x 33 x 1000. L’unico modo per poter visualizzare i vari scenari in MATLAB® è crearne un grafico in 3 dimensioni. Quello che si ottiene ad esempio per lo scenario n° 500 è rappresentato nel Grafico 4.2.

Grafico 4.2 Evoluzione della curva dei tassi nello scenario n°500.

Fonte: nostra elaborazione

Tra i mille scenari è stato selezionato il cinquecentesimo, in cui possiamo vedere che ad ogni scadenza (Tenor) ed ogni data di simulazione corrisponde il valore di un determinato tasso di interesse, che rende il grafico tridimensionale. In altri termini, per ogni data di simulazione dal 20 giugno 2016 al 20 settembre 2026 possiamo osservare una curva dei tassi, costruita per tutte le scadenze fino a 30 anni, espresse in mesi.

A questo punto, per ciascun scenario di tasso che è stato generato calcoliamo i fattori di sconto (dfactors) che ci serviranno per quantificare l’esposizione attesa scontata. La funzione fondamentale che viene utilizzata all’interno del codice è zero2disc che, a partire dalle zero curves generate nei vari scenari, fornisce le relative discount curves. Il fattore di sconto per una certa data di simulazione in un determinato scenario è calcolato come il prodotto dei fattori di sconto incrementali da una data di simulazione all’altra, lungo la traiettoria del tasso di interesse dello scenario considerato. L’output che otteniamo (dfactors) è una matrice di dimensione numDates x numScenarios, ossia 50 x 1000, poiché per ogni data di simulazione di ogni scenario abbiamo una curva di tassi a cui naturalmente corrisponde una curva di sconto.

(14)

4.2.3 Il pricing

Una volta che abbiamo simulato un numero sufficiente di scenari di tasso di interesse, possiamo prezzare i vari contratti ad ogni data di simulazione futura per ogni scenario.

Tutta la fase di pricing si sintetizza in MATLAB® nell’implementazione di una funzione denominata hcomputeMtMvalues2, che calcola i valori Mark to Market di tutti gli swaps prendendo come input i seguenti elementi:

 swaps, che è la struttura con 10 campi che contiene tutti i dati relativi ai contratti, come visto precedentemente;

 simulationDates, cioè le date di simulazione;  scenarios, ossia gli scenari di tasso generati;

 Tenor, cioè le scadenze (in numero di mesi) per le quali abbiamo i livelli degli zero rates.

Il risultato è una matrice, o un “cubo”, di valori dei contratti (values) di dimensioni numDates x numSwaps x numScenarios, ossia 50 x 36 x 1000. Infatti, questa matrice tridimensionale contiene i valori futuri di tutti i contratti ad ogni data di simulazione per ogni scenario: ogni riga rappresenta una data di simulazione, ogni colonna un contratto ed ogni “pagina” uno scenario simulato.

Tali valori vengono calcolati tramite la sottofunzione hswapapprox, richiamata dalla funzione principale, che approssima i prezzi degli interest rate swaps plain vanilla. Nel calcolo del CVA, è piuttosto comune utilizzare funzioni semplificate per prezzare i contratti in modo da migliorare la performance delle simulazioni Monte Carlo da effettuare. In altre parole, la valutazione esatta del prezzo dello swap viene sacrificata a fronte di una miglior prestazione complessiva del calcolo del CVA. La funzione di cui stiamo parlando può dunque essere usata nell’ambito della stima del CVA, ma non dovrebbe essere utilizzata quando viene richiesta un’accurata valutazione dei prezzi. In quest’ultimo caso, è la funzione swapbyzero che deve essere utilizzata per prezzare gli swaps a partire da curve di tassi zero. Rispetto a quest’ultima funzione, hswapapprox presenta una serie di restrizioni:

1) viene utilizzata un’unica curva zero per tutti i contratti swap;

2) ogni “gamba” dello swap deve avere la stessa frequenza di reset, ossia di aggiustamento del tasso;

3) per tutti gli swaps viene usata la convenzione effettivi/365 per il calcolo dei giorni; 4) non viene accettato nessun input aggiuntivo opzionale, tranne LatestFloatingRate.

(15)

I parametri in ingresso di questa funzione sono: ZeroDates, ZeroRates, Compounding, Settle, LegRate, Maturity, Principal, LegType, LatestFloatingRate, LegReset, di cui abbiamo già spiegato il significato nei paragrafi precedenti. Questi sono, però, gli input che devono essere utilizzati in generale quando vogliamo prezzare uno swap. Nel nostro caso specifico, il pricing deve essere effettuato ad ogni data di simulazione e quindi anche gli input devono far riferimento ad ogni specifica data. Ecco che i nostri parametri specifici diventano:

 curveDates, ossia le date di scadenza della struttura a termine dei tassi che si hanno a partire dalla data di simulazione considerata;

 curves, cioè tutte le strutture a termine dei tassi generate in ogni scenario alla data di simulazione considerata;

 compounding, ossia il tipo di capitalizzazione degli interessi. Nel nostro caso è pari a -1, che indica una capitalizzazione continua;

 simDate, cioè la specifica data di simulazione presa in considerazione;

 swaps.LegRate (validIdx,:), ossia i tassi ricevuti e pagati dalla Banca X per i soli contratti che non sono ancora scaduti alla data di simulazione considerata;

 swaps.Maturity (validIdx), cioè le scadenze dei contratti che non sono ancora scaduti alla data di simulazione presa in considerazione;

 swaps.Principal (validIdx), ossia il capitale nozionale di riferimento dei contratti che non sono ancora scaduti alla data di simulazione considerata;

 swaps.LegType (validIdx,:), cioè il tipo di tasso ricevuto/pagato in quei contratti che non sono ancora scaduti alla data di simulazione presa in considerazione;

 lastFloats (validIdx,:), ossia il tasso variabile registrato all’ultima data di reset prima della specifica data di simulazione considerata. Abbiamo bisogno di questo tasso perché il tasso variabile corrente non è direttamente specificato nella curva dei tassi zero che abbiamo a disposizione per quella data di simulazione, dal momento che le date di simulazione a cui gli swaps vengono valutati non corrispondono alle loro date di pagamento in cui i tassi variabili vengono fissati. Così, il LatestFloatingRate viene posto pari al tasso a 3 mesi alla data di pagamento precedente (tutti gli swaps hanno date di pagamento trimestrali), stimato effettuando un’interpolazione tra le curve che abbiamo simulato;

 swaps.LegReset (validIdx,:), ossia la frequenza di reset dei contratti che non sono ancora scaduti alla data di simulazione presa in considerazione.

(16)

Grazie a queste variabili, hswapapprox è in grado di fornirci il prezzo approssimativo di ogni contratto ad ogni data di simulazione per ogni scenario, che viene calcolato come differenza tra i valori attuali dei flussi di pagamenti delle due gambe (fissa e variabile) ancora dovuti in base alla previsione contrattuale88.

Per visualizzare i valori ottenuti, possiamo creare un grafico. Se selezioniamo ad esempio lo scenario n° 500, nel Grafico 4.3 possiamo vedere l’evoluzione dei prezzi di tutti gli swap nel periodo di simulazione. Essi presentano un ordine di grandezza di 106 e si approssimano a zero man mano che il contratto si avvicina alla data di scadenza, dal momento che dopo ogni data di pagamento il valore dei flussi di cassa residui diminuisce.

Grafico 4.3 L’evoluzione dei prezzi degli swaps nello scenario n° 500.

Fonte: nostra elaborazione

Per visualizzare non un singolo scenario ma tutti gli scenari, possiamo calcolare per ogni controparte il valore totale dei contratti con essa stipulati, sommando algebricamente i singoli valori degli swaps. In ciascuno dei seguenti grafici, ogni curva rappresenta il valore totale del portafoglio in essere con una controparte in un singolo scenario della nostra simulazione: il totale delle curve è quindi pari a mille. Come ogni scenario si muove in avanti nel tempo, i valori dei contratti crescono o decrescono in base a come cambiano le strutture a termine dei tassi di interesse generate.

(17)

Grafico 4.4 Valore totale del portafoglio di swaps Grafico 4.5 Valore totale del portafoglio di swaps nei vari scenari per BNP Paribas. nei vari scenari per Goldman Sachs.

Fonte: nostra elaborazione Fonte: nostra elaborazione

Grafico 4.6 Valore totale del portafoglio di swaps Grafico 4.7 Valore totale del portafoglio di swaps nei vari scenari per Deutsche Bank. nei vari scenari per JP Morgan.

Fonte: nostra elaborazione Fonte: nostra elaborazione

Grafico 4.8 Valore totale del portafoglio di swaps nei vari scenari per Barclays.

(18)

4.2.4 L’esposizione

I valori dei contratti vengono ora convertiti in esposizioni, tenendo conto dei netting agreements. Come abbiamo già potuto dire, questi accordi riducono le esposizioni perché consentono di compensare i valori di quei contratti che presentano segno opposto.

La funzione che utilizziamo è creditexposures, che per ogni controparte procede al calcolo dell’esposizione ad ogni data di simulazione, in base alla formula che abbiamo spiegato nel capitolo 3, ossia:

𝐸(𝑡) = 𝑚𝑎𝑥 {∑ 𝑉𝑖(𝑡), 0 𝑖

}

Questa funzione prende come input il cubo dei valori di tutti i contratti (values), il vettore contenente il numero di identificazione della controparte relativo ad ogni contratto (swaps.Counterparty) ed il vettore contenente il numero di identificazione del netting set in cui ogni contratto è incluso (swaps.NettingID). Essa restituisce l’output exposures , ossia il cubo delle esposizioni creditizie nei confronti delle varie controparti di dimensioni numDates x numCounterparties x numScenarios (50 x 5 x 1000), che rappresentano la potenziale perdita in cui la Banca X potrebbe incorrere a tutte le date di simulazione, per tutte le controparti e per tutti gli scenari se la controparte fallisse. Ad esso si aggiunge expcpty, ossia il vettore contenente i numeri identificativi delle controparti che corrispondono alle colonne del cubo exposures.

Grafico 4.9 Esposizione per BNP Paribas. Grafico 4.10 Esposizione per Goldman Sachs.

Fonte: nostra elaborazione Fonte: nostra elaborazione

(19)

Grafico 4.11 Esposizione per Deutsche Bank. Grafico 4.12 Esposizione per JP Morgan.

Fonte: nostra elaborazione Fonte: nostra elaborazione

Grafico 4.13 Esposizione per Barclays.

Fonte: nostra elaborazione

Nei grafici rappresentati possiamo vedere l’esposizione nei confronti di tutte le cinque controparti. In ognuno di essi sono rappresentate le esposizioni nei confronti di una specifica controparte per ogni scenario della nostra simulazione. Similarmente a quanto accade nei grafici relativi ai valori dei contratti, le esposizioni per ogni scenario tendono a zero man mano che lo swap si avvicina alla data di scadenza. Tuttavia, a differenza del valore del contratto, l’esposizione non presenta mai valori negativi e ciò discende dalla sua stessa definizione. La relazione tra il valore del contratto e quello dell’esposizione è rappresentata nel Grafico 4.14, dove si può osservare che quando il valore del contratto è negativo l’esposizione è nulla, mentre quando il primo è positivo l’esposizione ha anch’essa valore positivo e cresce proporzionalmente.

(20)

Grafico 4.14 Esposizione creditizia in uno swap. Esposizione

Valore contratto

Fonte: J. HULL, Fondamenti dei mercati di futures e opzioni, Pearson, Milano, 2005, pag. 183.

Sulla base delle esposizioni, possiamo adesso andare a calcolarne i profili tramite la funzione exposureprofiles, che prende in ingresso i parametri simulationDates ed exposures e restituisce i profili di esposizione (cpProfiles) per ogni controparte, come definiti nel capitolo 3. L’output viene restituito come una struttura contenente sette campi per ciascuna controparte:

1) Dates, ossia il vettore delle 50 date di simulazione;

2) Expected Exposure (EE), ovvero un vettore con lunghezza pari a 50 contenente le esposizioni attese ad ogni data di simulazione;

3) Potential Future Exposure (PFE), ossia un vettore con lunghezza pari a 50 contenente le PFE ad ogni data di simulazione;

4) Maximum Potential Future Exposure (Max PFE), definita come unico valore per ogni controparte;

5) Effective Expected Exposure (EffEE), ovvero un vettore con lunghezza pari a 50 contenente la massima esposizione attesa ad ogni data di simulazione;

6) Expected Positive Exposure (EPE), definita come unico valore per ogni controparte; 7) Effective Expected Positive Exposure (EffEPE), definita anch’essa come unico valore

per ogni controparte.

I profili di esposizione per ogni controparte sono rappresentati nei Grafici dal 4.15 al 4.19. Da notare il fatto che in tutti i grafici tranne il primo non compare l’Effective EE. In realtà, essa non è visibile solo perché si sovrappone all’Effective EPE. Per spiegarlo ricordiamo che l’Effective EE è la massima EE ad una specifica data e che, di fatto, rappresenta l’esposizione attesa soggetta al vincolo di non-decremento nel tempo. Essendo l’Expected Exposure decrescente per quelle quattro controparti raffigurate nei Grafici dal 4.16 al 4.19, l’Effective EE assumerà un unico valore per tutte le date di simulazione, pari a quello assunto dall’EE

(21)

alla prima data (che appunto sarà quello massimo). Di conseguenza, l’Effective EPE, che rappresenta la media ponderata nel tempo dell’Effective EE, sarà pari al valore di quest’ultima. I due profili saranno quindi coincidenti.

Grafico 4.15 Profili di esposizione per BNP Paribas. Grafico 4.16 Profili di esposizione per Goldman Sachs.

Fonte: nostra elaborazione Fonte: nostra elaborazione

Grafico 4.17 Profili di esposizione per Deutsche Bank. Grafico 4.18 Profili di esposizione per JP Morgan.

(22)

Grafico 4.19 Profili di esposizione per Barclays.

Fonte: nostra elaborazione

Tra i vari profili di esposizione, quello che ci serve per il calcolo del CVA è l’Expected Exposure e questa deve essere scontata. Per ottenere le esposizioni attese scontate per ogni controparte eseguiamo i seguenti passi:

 calcoliamo il cubo delle esposizioni scontate per ogni controparte, ad ogni data di simulazione e per ogni scenario (discExp), avente le stesse dimensioni del cubo delle exposures. Per ottenerlo, per ogni scenario moltiplichiamo i fattori di sconto (dfactors) per le esposizioni (exposures) tramite l’operatore @times;

 sulla base delle esposizioni scontate discExp calcoliamo i profili di esposizione scontati (discProfiles) tramite la funzione exposureprofiles, specificando in quest’ultima di essere interessati esclusivamente all’Expected Exposure;

 aggregriamo le esposizioni attese scontate di ogni controparte nella matrice discEE di dimensioni numDates x numCounterparties, ossia 50 x 5, dove ogni colonna rappresenta le esposizioni attese scontate a tutte le date di simulazione per ciascuna controparte.

Le esposizioni attese scontate non sono altro che una media delle esposizioni scontate ad ogni data di simulazione e sono rappresentate nel Grafico 4.20 per ogni controparte. Ciò che possiamo osservare è che le esposizioni attese scontate nei confronti di BNP Paribas e Barclays sono quelle che presentano i valori più bassi. Di conseguenza, sono proprio queste due controparti a risultare come le meno rischiose e saranno quindi queste a dar luogo ai CVA più bassi. Al contrario, il CVA maggiore sarà associato a Goldman Sachs perché è nei suoi confronti che la Banca X presenta i valori di esposizione attesa scontata più elevati.

(23)

Grafico 4.20 Le esposizioni attese scontate per ogni controparte.

Fonte: nostra elaborazione

4.2.5 Le curve della probabilità di default

La penultima fase è quella del calcolo delle probabilità di default delle varie controparti. Per poter ricavare queste ultime sono necessari i dati relativi agli spreads dei credit default swaps di tutte le controparti. I CDS spreads rappresentano il premio pagato dall’acquirente della protezione al venditore. Sono quotati per anno in punti base e si applicano al valore nozionale del contratto. Ad esempio, un CDS spread di 593 punti base per un debito brasiliano di 5 anni implica che l’assicurazione contro il default del governo brasiliano abbia un costo pari a 59300 $ l’anno per un valore nozionale di 1 milione $.

I dati relativi ai CDS spreads delle cinque controparti su cui lavoriamo sono stati estrapolati dal sito www.datagrapple.com alla data di valutazione, ossia il 20 giugno 2016, e sono stati inseriti in un secondo foglio (“CDS Spreads”) del file excel “swap-portfolio.xlsx”, così come raffigurati nella Tabella 4.3. Sono riportati per diverse scadenze: 1, 3, 5, 7 e 10 anni. Vediamo che si fa sempre riferimento al 20 settembre di tali anni perché le date di scadenza dei CDS sono standardizzate. Infatti, dal 21 dicembre 2015, l’ISDA ha stabilito che queste cadano nei giorni del 20 marzo e del 20 settembre (prima di questa data, erano disponibili anche il 20 giugno ed il 20 dicembre)89. Così, ad esempio, un CDS che ha scadenza pari ad 1 anno alla data del 20 giugno 2016, non scadrà il 20 giugno 2017 ma il 20 settembre 2017. In

89 ISDA, Amending When Single-Name CDS Roll to New ‘On-the-Run’ Contracts, in www2.isda.org, consultato

(24)

particolare, scadranno il 20 settembre 2017 tutti quei CDS con scadenza 1 anno negoziati tra il 20 marzo 2016 ed il 19 settembre 2016.

Tabella 4.3 Spreads dei credit default swaps delle 5 controparti per diverse scadenze alla data del 20 giugno 2016.

Fonte: www.datagrapple.com

Questi dati vengono caricati in MATLAB® dal file excel tramite la funzione readtable, che crea una tabella (CDS) leggendo i dati del file disposti in colonne. Le date di scadenza presenti nella tabella vengono convertite in numeri seriali e denominate CDSDates, mentre per gli spreads viene creata una matrice denominata CDSSpreads. Le CDSDates ed i corrispondenti CDSSpreads aggregati in una matrice rappresentano uno degli input della funzione cdsbootstrap, la quale ricava le curve di probabilità di default dalle quotazioni di mercato dei CDS tramite la formula spiegata nel paragrafo 3.3.4 del precedente capitolo. A tali parametri in ingresso si aggiungono: la matrice ZeroData, che contiene le date ed i relativi tassi zero, la data di Settle (20 giugno 2016) e le date a cui vengono calcolate le probabilità, cioè le simulationDates. In particolare, inserita in un ciclo for, la funzione restituisce le probabilità di default cumulate a tutte le 50 date di simulazione per ogni singola controparte (probData). Tali probabilità vengono poi aggregate nella matrice DefProb (50 x 5), in modo da raggruppare le curve di probabilità di insolvenza di tutte le cinque controparti. Queste ultime sono rappresentate nel Grafico 4.21, dove possiamo osservare curve di probabilità di default crescenti per tutte le controparti. Ciò significa che queste subiranno dei downgrades nel tempo. I valori più significativi sono associati a Deutsche Bank, che presenta la massima probabilità di insolvenza al 20 settembre 2026, con un valore pari a 0,3175.

Date cp1 cp2 cp3 cp4 cp5 9/20/2017 50 52 111 41 70 9/20/2019 61 72 151 45 82 9/20/2021 84 105 187 66 105 9/20/2023 103 125 205 84 123 9/20/2026 115 143 216 102 137

(25)

Grafico 4.21 Le curve della probabilità di default di ogni controparte.

Fonte: nostra elaborazione

4.2.6 Il CVA per ogni controparte

Il passo finale è quello dell’implementazione della formula del CVA così come descritta nel precedente capitolo. L’espressione che viene in particolare utilizzata è quella di approssimazione, che viene scritta in MATLAB® tramite la seguente riga di codice:

CVA = (1-Recovery) * sum(discEE(2:end,:) .* diff(DefProb));

dove:

 Recovery rappresenta il tasso di recupero, che viene fissato pari al 40%;

 discEE(2:end,:) rappresenta la matrice delle esposizioni scontate per tutte le controparti e per tutte le date di simulazione, ad esclusione della data di valutazione;  diff(DefProb) è una matrice in cui ogni elemento è pari alla differenza tra gli elementi

delle righe adiacienti di DefProb. In sostanza, si tratta di una matrice che include per ogni controparte la differenza tra la probabilità di default ad una data di simulazione e quella alla data precedente. Infatti, nella formula approssimata del CVA non devono essere utilizzate le probabilità cumulate ma quelle marginali, che vengono calcolate proprio in questo modo.

Tramite l’operatore della moltiplicazione elemento per elemento (.*) ogni esposizione scontata ad una certa data di simulazione viene moltiplicata per la probabilità marginale a quella data, per tutte le controparti. Per ogni controparte, i prodotti ottenuti vengono sommati tramite la funzione sum ed ogni somma viene moltiplicata per il complemento ad uno del

(26)

tasso di recupero. Ciò che si ottiene è un vettore che contiene i CVA per tutte le cinque controparti, i cui valori sono rappresentati nella Tabella 4.4 e visualizzati nel Grafico 4.22.

Tabella 4.4 I valori del CVA e le relative percentuali rispetto all’EPE per tutte le cinque controparti.

BNP Paribas

Goldman Sachs

Deutsche

Bank JP Morgan Barclays

CVA

(€) 15’920,33 1’141’495,16 698’041,89 109’973,11 4’779,07

EPE (€) 128’042,88 10’088’245,92 4’282’454,43 1’546’988,16 67’754,33 CVA/

EPE 12,43% 11,32% 16,30% 7,05% 7,05%

Fonte: nostra elaborazione

Grafico 4.22 Credit Valuation Adjustment per tutte le controparti.

Fonte: nostra elaborazione

Come previsto sulla base dei valori delle esposizioni scontate, la controparte a presentare il CVA maggiore è Goldman Sachs, mentre i CVA minori sono associati a BNP Paribas e Barclays. In ogni caso, il CVA risulta piuttosto rilevante rispetto al livello medio di esposizione attesa, come rappresentato nella Tabella 4.4 dove, oltre ai valori del CVA, si possono osservare le percentuali rispetto all’EPE.

(27)

4.3 Un’analisi di sensitività del CVA

Come abbiamo enunciato a livello teorico nel capitolo 3 e osservato a livello pratico in questo capitolo, il CVA è una misura che dipende da tre componenti: l’esposizione, la probabilità di default della controparte (e quindi gli spreads dei relativi credit default swaps) ed il tasso di recupero. Ciò che risulta interessante è dunque andare a verificare come cambia la misura del CVA in seguito a variazioni dei valori dei parametri in ingresso. Possiamo quindi effettuare una sorta di analisi di sensitività del CVA ai cambiamenti delle sue componenti, verificando gli effetti sulle stime prodotti da modifiche nei valori dei parametri di input. In particolare, andiamo ad analizzare gli impatti di due delle tre componenti: la probabilità di insolvenza ed il tasso di recupero.

4.3.1 L’impatto della probabilità di default

Il primo impatto sul CVA da verificare può essere quello di un incremento degli spreads dei CDS relativi alle controparti, ossia un brusco peggioramento nella qualità creditizia di queste ultime ed un conseguente aumento della probabilità di insolvenza. Supponiamo, allora, che per tutte le scadenze dei CDS gli spreads raddoppino, ottenendo i valori indicati nella Tabella 4.5.

Tabella 4.5 Spreads dei credit default swaps delle 5 controparti raddoppiati per tutte le scadenze.

Fonte: nostra elaborazione

Effettuando una nuova stima sulla base di questi dati, otteniamo i risultati rappresentati nella Tabella 4.6. Date cp1 cp2 cp3 cp4 cp5 9/20/2017 100 104 222 82 140 9/20/2019 122 144 302 90 164 9/20/2021 168 210 374 132 210 9/20/2023 206 250 410 168 246 9/20/2026 230 286 432 204 274

(28)

Tabella 4.6 Impatto del raddoppio dei CDS spreads sul CVA. BNP Paribas Goldman Sachs Deutsche

Bank JP Morgan Barclays

Nuovo CVA (€) 30’278,41 2’147’333,93 1’314’027,78 212’008,87 9'463,62 Variazione assoluta (€) +14’358,08 +1’005’838,77 +615’985,89 +102’035,76 +4'684,55 Variazione percentuale +90,18% +88,12% +88,24% +92,78% +98,02%

Fonte: nostra elaborazione

Come potevamo aspettarci, un incremento degli spreads causa un aumento anche nel Credit Valuation Adjustment. Tuttavia, ciò che si evidenzia è un incremento non completamente proporzionale: se gli spreads aumentanto del 100%, il CVA aumenta all’incirca del 90% per tutte le controparti. L’unica eccezione è Barclays, per cui la variazione percentuale raggiunge quasi il + 100%.

Naturalmente, un dimezzamento degli spreads provoca una riduzione del CVA, con risultati uguali ma di segno opposto.

4.3.2 L’impatto del recovery rate

Un altro impatto sul CVA da verificare è quello di una variazione del tasso di recupero. Nella stima originaria avevamo impostato un tasso pari al 40%. Supponiamo però che esso raddoppi e passi all’80%.

Tabella 4.7 Impatto del raddoppio del recovery rate sul CVA.

BNP Paribas Goldman Sachs Deutsche Bank JP Morgan Barclays Nuovo CVA (€) 14’398,61 1’011’598,86 619’653,17 102’276,29 4’685,29 Variazione assoluta (€) -1’521,72 -129’896,3 -78’388,72 -7’696,82 -93,78 Variazione percentuale -9,56% -11,38% -11,22% -7,00% -1,96%

Fonte: nostra elaborazione

Ciò che possiamo dedurre dalla Tabella 4.7 è che, a differenza dell’impatto dei CDS spreads, quello del recovery rate non è molto significativo in quanto le variazioni del CVA si aggirano

(29)

attorno al 10% a fronte di un incremento del 100% del tasso di recupero. La spiegazione sta nel fatto che esiste un “effetto di compensazione”. Infatti, il tasso di recupero non compare solo nella formula finale del CVA, ma anche in quella del calcolo della probabilità di default: un incremento del recovery rate da un lato riduce la possibile perdita poiché riduce il fattore (1 − 𝑅), dall’altro la accresce perché aumenta la probabilità di insolvenza, in base alla formula spiegata nel capitolo 3. Il risultato netto è un leggero decremento del CVA, poiché la riduzione del fattore (1 − 𝑅) è maggiore rispetto all’incremento della probabilità di insolvenza. Infatti, la riduzione di tale fattore è lineare rispetto ad 𝑅, mentre l’incremento della probabilità di default non lo è.

4.4 Aspetti positivi e negativi del processo di stima in MATLAB®

Giunti al termine dell’implementazione in MATLAB® del processo di stima del CVA, possiamo soffermarci ad osservarne i vantaggi e gli svantaggi.

L’aspetto positivo più rilevante, che risalta subito agli occhi, è sicuramente la flessibilità di questo metodo di calcolo. Infatti, l’ambiente MATLAB® consente di adattare velocemente il modello a nuovi parametri in ingresso ed a nuovi dati, permettendo di effettuare il calcolo per portafogli nuovi e controparti differenti. Come abbiamo visto, ciò consente anche di effettuare velocemente analisi di sensitività della misura. Questo permette alla banca di capire come questa grandezza possa rispondere ad eventuali variazioni degli elementi che la compongono e, di conseguenza, le consente di trovare la copertura più adatta ed idonea a fronte di questi cambiamenti, soprattutto nel caso in cui siano sfavorevoli ad essa e dunque comportino un aumento del CVA. Inoltre, sono sufficienti degli aggiustamenti del codice MATLAB® di questo modello di base per poter eseguire il calcolo per strumenti finanziari nuovi e diversi dagli interest rate swaps. La flessibilità è un aspetto molto importante a fronte delle continue modifiche del contesto sia economico che regolamentare, a cui i modelli devono essere sempre adeguati. Il framework regolamentare richiede ad esempio modelli sempre più complessi, che includano situazioni di stress ed un numero sempre maggiore di dati da trattare. Ecco che un modello scritto in MATLAB®, oltre a poter essere adattato facilmente a nuove esigenze, può consentire di gestire una rilevante serie di dati e di effettuare un numero significativo di simulazioni in poco tempo. La velocità è dimostrata dal fatto che su di un Personal Computer con sistema operativo Windows 8 e processore Intel i5 1,7 GHz il tempo impiegato per portare a termine il processo di calcolo è di circa 12,2 secondi, come quantificato grazie alle funzioni tic e toc presenti in MATLAB®.

(30)

Il fatto di poter effettuare molte simulazioni in tempi brevi consente anche di poter andare a valutare velocemente l’esposizione futura, senza doversi fermare al calcolo superficiale di quella corrente, come invece approcci più semplici fanno.

Di questi vantaggi ha avuto diretta esperienza Banca Carige, che di recente ha sviluppato internamente un proprio framework di calcolo scritto in ambiente MATLAB®, simile a quello appena presentato90. Per quanto riguarda la velocità, i managers di tale banca hanno dichiarato di aver ottenuto oltre 10’000 simulazioni in meno di un’ora. A proposito invece della flessibilità, il project manager Paolo Raviola ha spiegato che l’utilizzo di questo ambiente di calcolo ha consentito alla banca di ottenere la propria libertà di sviluppare e migliorare in qualsiasi momento i propri algoritmi di calcolo, confrontando poi i risultati ottenuti con i benchmarks del settore. Nessun fornitore terzo è infatti in grado di fornire soluzioni che possano soddisfare gli specifici bisogni di ogni banca. A tale aspetto si lega anche quello della trasparenza: sviluppando propri modelli, i managers della banca sono in grado di conoscere esattamente i risultati che producono. In particolare, Pier Giuseppe Giribone, ingegnere finanziario e sviluppatore MATLAB®, ha parlato di assenza del “black-box effect”: sviluppando in proprio il modello di calcolo, i managers hanno potuto ottenerne piena padronanza e soprattutto hanno potuto conseguire una conoscenza profonda delle logiche di funzionamento. Un sistema fornito da terzi è invece una sorta di “scatola nera”, da cui appunto il termine black box, che per poter apportare modifiche richiede una notevole esperienza nella programmazione, spesso assente in banche di piccole o medie dimensioni. La capacità di effettuare continui miglioramenti dà luogo anche ad un altro importante vantaggio: la possibilità di essere sempre competitivi, stando al passo con i maggiori competitors.

A questi risultati raggiunti si aggiungono: la capacità di valutare gli strumenti finanziari in tempo reale e quindi di effettuare i calcoli quotidianamente; l’esaustività, ossia la possibilità di rendere disponibili tutti i risultati ottenuti in un database, per la reportistica e le analisi; l’economicità, sia in termini di tempi di sviluppo del modello che a livello di costi.

Naturalmente, non mancano aspetti negativi, tra cui la necessità di possedere competenze tecniche piuttosto avanzate per poter sviluppare il modello ed un sistema informatico sofisticato, costoso da creare. La sfida di ogni banca sta nel comprendere quali siano, tra positivi e negativi, gli aspetti che pesano di più, in modo tale da capire se l’implementazione in MATLAB® di tale modello possa essere vantaggiosa o meno.

90 P.G. GIRIBONE, S. LIGATO, P. RAVIOLA, MATLAB in Banca Carige: determinazione del Credit and Debt

Valuation Adjustment (CVA/DVA), Conference paper, novembre 2014, in www.researchgate.net, consultato il 26

Riferimenti