guida in italiano

Transcript

guida in italiano
LA PIATTAFORMA FAIRMAT ®
PER LA MODELLAZIONE DEI
CONTRATTI DERIVATI:
DESCRIZIONE E GUIDA D'USO
PER L'UTENTE
A cura di MIRKO DI LEO
con la collaborazione del team di Fairmat
(La presente guida è valida per la versione Academic ma tratta alcuni aspetti
condivisi con Professional di Fairmat)
INDICE
INTRODUZIONE
- Fairmat Srl
- La piattaforma software di Fairmat
- Struttura del Manuale
PARTE I – GUIDA UTENTE
Capitolo 1 – Installazione e avvio
- Come scaricare l'applicativo di Fairmat
- La schermata iniziale e le modalità d'uso
- Il Menù File
- Il Menù Edit
- Il Menù Analysis
- Il Menù Settings
- Il Menù Tools
- Il Menù Help
Capitolo 2 – Il linguaggio algebrico di Fairmat
- Assets' Set Functions
- Date and Time Functions
- Financial Functions
- Functions on Vectors and Matrices
- Vector Functions;
- Related Functions;
- Alcuni esempi sull'utilizzo delle Vector Functions;
- Matrix Functions;
- Interest Rate Functions
- Interest Rate Conversion Functions;
- Deterministic Interest Rate Functions;
- Stochastic Interest Rate Functions;
- Interval Functions
- Selection Functions
- Standard Functions
- La funzione IIF e la funzione SIIF;
- Other Functions
- Derivatives;
- Option Map Block Related Functions;
Capitolo 3 - Il Work Space di Fairmat
- L'ambiente Parameters and Functions
- Parameters: Scalar;
- Parameters: Vectors and Matrices;
- Parameters: Date Sequences;
- Functions: Analytic Functions;
- Functions: Interpolated Functions;
- Functions: Recurrence Functions;
- Transformations: un'introduzione;
- Day count conventions: uno sguardo generale;
- Day count conventions: Date metrics counter;
- Day count conventions: Date metrics conventions;
- Transformations: Date Vector Adjustment;
- Transformations: Date Vector Differences Calculator;
- Transformations: Zero Rate Curve Calculator;
- L'ambiente Stochastic Processes
- Un esempio di inserimento di un processo stocastico: Geometric Brownian Motion (GBM);
- Il Tab Data Source;
- L'ambiente Discounting
- Il sistema Global (Project) Discounting;
- Il sistema Option Dependent Discounting;
- L'ambiente Discounting e le funzioni ricorrenti;
- L'ambiente Option Map
- Come inserire e comporre le Standard Options o le Strip of Options;
- Le Standard Options;
- Le Strip of Options;
- Gli Operators dell'ambiente Option Map: come inserirli ed utilizzarli;
- Il Functional Operator;
- Il Decisional Operator;
- L'AND Operator;
- L'OR Operator;
- I branches;
- L'ambiente Manage Scenarios
- Il Tab Info
- La Toolbar
- Lo Status Panel e i suoi tab
- Il tab Valuations;
- Il tab Errors;
- Il tab Parameters;
- Il tab Log;
- Il tab Fairmat Console;
- Le funzionalità di aiuto editing
- La funzionalità di auto-complete;
- Il Renaming;
Capitolo 4 - Le analisi e gli output
- I tipi di analisi effettuabili
- Valuation
- Risk Analysis
- Sensitivity Analysis
- Impact Analysis
- Scenario Analysis
- Greek Analysis
- Le greche dei contratti derivati sui tassi di interesse
Capitolo 5 - La modellazione dei contratti finanziari
- Geometric Brownian Motion (GBM)
- Utilizzo del GBM in Fairmat;
- Calibrazione del GBM: opzioni di stima;
- Calibrazione del GBM: simulazione del tasso di cambio;
- Mean Reverting Process
- Utilizzo del Mean Reverting Process in Fairmat;
- Log-Mean Reverting Process
- Itô Process
- Log-Itô Process
- Poisson Jump Process
- Un esempio: GBM con Poisson Jump Process;
- La calibrazione dei modelli
- Il file XML Interest Rate Market Data;
- Il file XML Call Price Market Data;
- La modellazione del rischio di credito
- La variabile casuale “time to default”;
- CDS (Credit Default Swap);
- CVA (Credit Value Adjustment);
PARTE II – ESEMPI E APPLICAZIONI
- Tutorial I - Vanilla Interest Rate Swap
- Tutorial II - Fixed-Float Currency
- Tutorial III - Accrual Swap
- Tutorial IV - Path Dependence
- Tutorial V - Swap with Asian Option
- Tutorial VI - Reload3 Bond
- Tutorial VII - Convertendo BPM 2009/2013 – 6.75% with Warrant
INTRODUZIONE
INTRODUZIONE
Fairmat Srl
Fairmat Srl è la società che sviluppa e commercializza la piattaforma di pricing Fairmat®.
Fairmat Srl è una società specializzata nell'erogazione di servizi, software e consulenza su temi
legati alla valutazione e al controllo del rischio di prodotti e portafogli di investimenti finanziari. La
società è impegnata in vari ambiti fra i quali in particolare:
•
•
•
Servizi di valutazione indipendente: Fairmat Srl fornisce servizi di pricing e repricing di
contratti o portafogli di strumenti strutturati OTC (Over The Counter) per diverse tipologie
di contratti finanziari derivati, tra i quali contratti indicizzati ai tassi di interesse, al mercato
azionario, all'inflazione, i contratti legati al credito e gli strumenti basati sulle materie prime;
Integrazione e soluzione software: Fairmat Srl fornisce prodotti software e soluzioni
personalizzate per il pricing e il risk management;
Formazione: Fairmat Srl offre formazione sull'analisi e la valutazione di strumenti
finanziari.
La piattaforma software Fairmat
Fairmat è uno strumento di modellazione dei prodotti finanziari che permette di modellare qualsiasi
strumento finanziario ed eseguire, anche interattivamente, valutazioni di tipo quantitativo (come ad
esempio il calcolo del fair value di uno strumento finanziario) senza il bisogno di codificare
routines di pricing.
Fairmat è disponibile in diverse versioni:
1) Fairmat Academic: soluzione gratuita ed orientata al mondo universitario;
2) Fairmat Professional: strumento desktop indicato per la prototipizzazione e la valutazione e
l'analisi puntuale di strumenti finanziari derivati;
3) Fairmat Server: soluzione enterprise (web-based) progettata per le esigenze dei dipartimenti
quantitativi di banche ed assicurazioni. Mentre l'obiettivo di Fairmat Academic e Fairmat
Professional consiste nel fornire uno strumento di prototipizzazione o validazione di modelli
di pricing, Fairmat Server ha l'obiettivo di semplificare il monitoraggio (giornaliero) di
portafogli di strumenti derivati;
4) Fairmat Cloud: piattaforma semplificata che consente di prezzare ed analizzare prodotti
strutturati, certificati, e derivati su tasso, cambi e azionario semplicemente e rapidamente,
con sole tre azioni: ricerca, personalizzazione e valutazione. il tutto direttamente dal tuo
browser, senza pagare licenze annuali ma solamente per le valutazioni richieste.
I prodotti Fairmat sono estendibili sia per quanto riguarda i modelli teorici o le anlitiche: citiamo
come esempio le seguenti applicazioni:
•
Generazione della reportistica inerente agli scenari probabilistici:
Il plug-in Informativa CONSOB consente agli intermediari di adempiere ai requisiti previsti
dalla Comunicazione CONSOB DIN/DSE/9025454 del Marzo 2009 implementando quanto
già previsto nel Quaderno di Finanza numero 63. La soluzione è attualmente utilizzata da
tre delle più grandi compagnie finanziario-assicurative presenti in Italia;
La CONSOB è, in particolare, la Commissione Nazionale per le Società e la Borsa ed è
I
INTRODUZIONE
l'Ente che si occupa della supervisione dei mercati finanziari e della Borsa Valori italiana per
quanto riguarda in particolare la trasparenza informativa da parte delle società quotate
emittenti di strumenti finanziari;
•
Generazione di report per l'hedge accounting:
il plug-in IAS 39 Hedge Accounting permette di calcolare le metriche necessarie alla
rendicontazione a fini di bilancio per strumenti finanziari secondo quanto specificato dalla
direttiva IAS 39;
Quindi, utilizzando le piattaforme software di Fairmat è possibile assolvere a diverse normative
assai importanti in tema di intermediari finanziari e mercati finanziari fra le quali si possono
menzionare in particolare le seguenti:
•
•
•
•
la Comunicazione CONSOB in tema di OICR (Organismi di Investimento Collettivo del
Risparmio) DIN/DSE/9025454;
il Regolamento emanato dall'Unione Europea n° 648 del 2012 sulla disciplina dei contratti
derivati OTC (Over the Counter) EU 648/2012 (EMIR);
la Direttiva IAS-39/IFSR 13;
la Direttiva per i fondi di investimenti alternativi AIFMD 2011/61/EU;
Con la piattaforma software Fairmat è possibile codificare e modellare in linea teorica ogni payoff e
tipologia di prodotto finanziario. In Fairmat Professional è poi contenuta una serie di templates per
poter essere operativi in poco tempo su prodotti derivati come gli Swaps (i cui templates più
importanti contenuti in Fairmat sono i seguenti: Fixed vs Float, Float vs Float, Fixed vs Float plus
Collar), le Interest Rate Options (i cui templates più importanti contenuti in Fairmat sono i
seguenti: Cap, Floor, Digital/Binary, Float plus Collar, Swapation), le Barrier Options (i cui
templates più importanti e di utilizzo comune sono i seguenti: Cap/Floor Knock In – Up and Down
–, Cap/Floor Knock Out – Up and Down –, Cap/Floor CMS Spread).
Con la piattaforma software di Fairmat è, infine, possibile accedere ai dati mercato attraverso il
servizio Data-Link, un sistema di fornitura di dati di mercato sufficiente per il pricing di strumenti
legati all'evoluzione dei tassi dei mercati europeo e statunitense.
Fairmat Professional è inoltre integrato con il software Bloomberg Professional.
II
INTRODUZIONE
Struttura del Manuale
Questo Manuale ha lo scopo di essere un'efficace e, al tempo stesso, completa guida all'utilizzo
della piattaforma per la modellazione dei contratti finanziari derivati e il loro pricing.
Il presente Manuale si compone di due parti distinte:
1) La Prima Parte relativa alla Guida Utente software e quindi di taglio più teorico. Questa
Parte ha, quindi, l'obiettivo di fornire per l'utente una guida completa del software e si
suddivide in cinque capitoli. Più nello specifico:
– Nel Capitolo 1, dopo aver illustrato step by step, come procedere con il download,
l'installazione e l'avvio del software, vedremo nel dettaglio i Menù Principali dello
stesso;
– Nel Capitolo 2, dopo aver illustrato brevemente il linguaggio algebrico che è alla base
del software, vedremo nel dettaglio tutte le tipologie funzioni disponibili ed utilizzabili
appunto in Fairmat;
– Nel Capitolo 3 vedremo ed impareremo ad utilizzare il Work Space di Fairmat, e quindi
tutti gli ambienti di lavoro disponibili ed utilizzabili dall'utente (quali l'ambiente
Parameters & Functions, l'ambiente Stochastic Process, l'ambiente Discounting,
l'ambiente Option Map e l'ambiente Manage Scenario), gli oggetti utilizzabili in Fairmat
utili ai fini della modellazione dei contratti finanziari, il Tab Info, la Barra degli
Strumenti e le Funzionalità di Aiuto-Editing;
– Nel Capitolo 4 vederemo i tipi di analisi che si possono condurre attraverso Fairmat
sugli strumenti finanziari in generale, e sui contratti derivati in particolare;
– Nel Capilto 5, infine, discuteremo dettagliatamente del problema della modellazione dei
contratti finanziari (attraverso l'illustrazione dei principali modelli stocastici utilizzabili
in Fairmat, appunto, per la modellazione delle diverse variabili di natura economica), del
problema della calibrazione dei modelli applicabili (attraverso l'esemplificazione dei
principali file in versione XML utilizzabili dall'utente) e del problema della
modellazione del rischio di credito (attraverso l'illustrazione della variabile casuale time
to default, del più importante tipo di contratto derivato relativo al rischio di credito,
ovvero il CDS – Credit Default Swap – e della metodologia di valutazione del rischio di
credito di controparte, ovvero il CVA – Credit Value Adjustment);
2) La Seconda Parte contente una serie di esempi di modellazione dei principali contratti
derivati e di case studies che ci saranno utili al fine di acquisire maggior dimestichezza e
maggior praticità nell'utilizzo dell'applicativo;
III
INTRODUZIONE
IV
PARTE I
GUIDA UTENTE
• CAPITOLO 1
INSTALLAZIONE E AVVIO
• CAPITOLO 2
IL LINGUAGGIO ALGEBRICO DI FAIRMAT
• CAPITOLO 3
IL WORK SPACE DI FAIRMAT
• CAPITOLO 4
LE ANALISI E GLI OUTPUT
• CAPITOLO 5
LA MODELLAZIONE DEI CONTRATTI FINANZIARI
CAPITOLO 1
INSTALLAZIONE
E
AVVIO
CAPITOLO 1 – INSTALLAZIONE E AVVIO
Come scaricare l'applicativo di Fairmat
Prima di poter utilizzare il software Desktop di Fairmat dobbiamo innanzitutto collegarci al sito di
Fairmat www.fairmat.com, iscriverci ad esso e procedere con il download del software per la sua
installazione sul pc.
All'apertura del sito www.fairmat.com apparirà l'home page dello stesso (figura 1.1).
Per poter scaricare il software Fairmat dobbiamo iscriverci al sito www.fairmat.com, ovvero fare
una sign up allo stesso. Per cui una volta giunti all'homepage di fairmat.com dobbiamo cliccare su
SIGN UP (figura 1.2).
Una volta cliccato sulla voce SIGN UP dell'home page (il cui url diretto è il seguente:
www.fairmat.com/signup) apparirà una pagina web riportante un form (figura 1.3) da compilare per
l'iscrizione al sito di Fairmat con i propri dati personali e l'indicazione del proprio indirizzo di posta
elettronica. Per la corretta compilazione del form è necessario, infine, anche (e soprattutto) accettare
le clausole inerenti le condizioni d'uso degli applicativi Fairmat ed inerenti la privacy (ovvero il
trattamento dei dati personali).
Una volta compilato il form per la Sign Up e una volta cliccato sulla casella SIGN UP, situata in
basso a sinistra della pagina web contenente il form, pochi secondi dopo arriverà al proprio
indirizzo di posta elettronica indicato nel form, una risposta automatica con la quale ci verrà
richiesto di cliccare su un link specifico (figura 1.4) per poter procedere con l'attivazione
dell'account.
Una volta attivato l'account Fairmat, tramite verifica dell'account stesso, pochi secondi dopo
arriverà al proprio indirizzo di posta elettronica (sempre quello riportato nel form per la Sign Up al
sito Fairmat) una seconda email con la quale ci verrà comunicata la conferma dell'avvenuta
iscrizione (figura 1.5). In quest' ultima email verranno riepilogati i dettagli dell'account Fairmat
appena creato (ossia Username e Password).
1
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.1: Home Page www.fairmat.com)
2
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.2: Sign Up al sito www.fairmat.com)
(Figura 1.3: Form per la Sign Up al sito www.fairmat.com)
3
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.4: Email per l'attivazione dell'account Fairmat)
(Figura 1.5: Conferma dell'avvenuta Sign Up al sito www.fairmat.com)
4
CAPITOLO 1 – INSTALLAZIONE E AVVIO
Creato l'account possiamo ora procedere con il download del software Desktop di Fairmat. Per far
ciò dobbiamo tornare all'home page del sito www.fairmat.com, effettuare il Log In al sito web
utilizzando le credenziali dell'account appena creato e cliccare su Download, qualora volessimo
scaricare la versione gratuita del software (Fairmat Academic), oppure su Buy o Get Trial qualora
volessimo invece scaricare la versione a pagamento del software (Fairmat Professional).
(Figura 1.6: Download del software desktop dall'home page di www.fairmat.com)
Arrivati alla sezione DOWNLOAD dovremo poi scegliere la versione adatta al nostro sistema
operativo. Per la maggior parte degli utenti l'opzione di default (ovvero Windows) è quella corretta.
(Figura 1.7: Download del software desktop - scelta del sistema operativo in uso)
5
CAPITOLO 1 – INSTALLAZIONE E AVVIO
Una volta effettuata la scelta relativa al sistema operativo, cliccare sulla casella SUBMIT. A questo
punto dovremo attendere qualche minuto per consentire il download dell'applicativo fairmat.exe;
all'apertura, in genere automatica, di questo applicativo (il cui nome del file è verosimilmente tipo
questo: fairmat-academic-1.6.1-r000.exe) apparirà sul desktop una finestra di dialogo, come quella
riportata nella figura 1.8. Cliccando su Esegui partirà il set up dell'applicativo; una vota seguite tutte
le indicazioni successive (fra le quali, in particolare, la richiesta di accettazione delle condizioni
d'utilizzo, la scelta relativa alla cartella di destinazione dell'installazione del programma e la scelta
se attivare o meno un'icona sul desktop relativa al programma stesso) ed una volta cliccato su Install
partirà poi l'installazione vera e propria del software. Contemporaneamente al momento del set up
dell'applicativo ci arriverà un'email (figura 1.9) con allegato il codice della licenza concessa da
Fairmat, che dovremo scaricare in quanto richiesto al momento del completamento del download
del programma per attivare definitivamente lo stesso sul nostro PC.
A questo punto vedremo apparire l'icona del software Fairmat sul desktop del nostro PC e potremo
iniziare ad utilizzare il software stesso.
(Figura 1.8: Download del software – Finestra di dialogo per l'avvio applicativo fairmat.exe)
(Figura 1.9: Licenza per l'utilizzo del software)
6
CAPITOLO 1 – INSTALLAZIONE E AVVIO
La schermata iniziale e le modalità d'uso di Fairmat
Fairmat è un applicativo progettato per facilitare la modellazione dei contratti finanziari derivati.
Fairmat consente, infatti, di modellare i contratti finanziari derivati con un alto livello di astrazione
attraverso un linguaggio di scrittura di tipo algebrico, alquanto semplice, in modo da poter stilizzare
in maniera semplificata i pay-off (anche quelli più complessi) dei contratti finanziari derivati stessi,
e attraverso una Option Map, in modo da poter stilizzare la struttura dei pagamenti previsti dal
contratto finanziario derivato oggetto di analisi. In particolare, in Fairmat il contratto finanziario
derivato oggetto di analisi viene scomposto nelle proprie caratteristiche fondamentali e rilevanti
come le dinamiche incerte relative ad esso, la struttura dei pagamenti previsti e la definizione dei
suoi pay-off. La struttura contrattuale può essere, infine, memorizzata su dei file che hanno
estensione .fair.
Una volta cliccato sull'icona Fairmat Academic apparirà la schermata (denominata anche Fairmat
Advices, figura 1.10) che non è esattamente quella iniziale ma che potremmo definire preliminare.
(Figura 1.10: Schermata iniziale di Fairmat – 1)
Come possiamo evincere dalla figura 1.10, le scelte che possiamo compiere sono le seguenti:
•
•
•
•
New Empty Project (figura 1.11): scelta da effettuare qualora volessimo creare un file .fair
ex-novo. Scegliendo tale advice apparirà la schermata iniziale di Fairmat vera e propria;
Open File (figura 1.12): scelta da effettuare nel caso in cui volessimo aprire un file .fair già
esistente;
Show Recent Files (figura 1.13): scelta che ci permette di visualizzare un elenco dei file .fair
recentemente aperti e/o modificati;
Help (figura 1.14): scelta che ci rimanda alla guida utente dell'applicativo; alla guida utente
possiamo comunque accedervi in qualunque momento e da qualunque finestra Fairmat ci
troviamo semplicemente premendo dalla tastiera il tasto F1;
7
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.11: Schermata iniziale di Fairmat – 2)
(Figura 1.12: Schermata Open File)
8
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.13: Schermata Show Recent Files)
(Figura 1.14: Schermata Help)
9
CAPITOLO 1 – INSTALLAZIONE E AVVIO
Con Fairmat possiamo lavorare utilizzando due diverse modalità (Modes): la Design Mode e
l'Analysis Mode (quest'ultima disponibile solo nella versione Professional).
In base alla scelta effettuata nella schermata degli advices, verremo automaticamente reindirizzati
verso una delle due modalità; più precisamente, se stiamo avviando un nuovo progetto da zero o se
stiamo aprendo un file .fair già esistente, verremo reindirizzati verso la Design Mode, mentre se si
sta aprendo un file template creato con Fairmat, verremo reindirizzati verso la Analysis Mode.
Ad ogni modo, soltanto però qualora stessimo utilizzando la versione Professional, possiamo
sempre passare da una modalità all'altra, possiamo sempre cambiare la modalità, selezionando, dalla
barra degli strumenti dell'applicativo, il seguente percorso View → Design Mode oppure il seguente
percorso View → Analysis Mode.
Nella Design Mode (figura 1.15) possiamo avere piena accessibilità all'editing di tutti i parametri, di
tutti i processi e di tutte le strutture contrattuali.
D'altra parte la Analysis Mode (figura 1.16) offre una visione compatta e semplificata di un progetto
Fairmat che ci permette di gestire solo uno specifico sottoinsieme di parametri del progetto: quelli
per i quali sia stato attivato il flag Publish nel tab Publishing.
L'intento della Analysis Mode è quello di fornire un'interfaccia utente più semplice nel momento in
cui avessimo bisogno di modificare più e più volte alcuni parametri del contratto (come ad esempio
il suo nozionale oppure le date di pagamento previste) o alcune impostazioni per la valutazione
(come ad esempio la data di valutazione – o Valuation Date – oppure ancora il numero di percorsi
simulati). La Analysis Mode non viene però influenzata dai cambiamenti eventualmente intervenuti
nella struttura della Option Map e nella struttura dei modelli sottostanti.
(Figura 1.15: Schermata Design Mode)
10
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.16: Schermata Analysis Mode)
Fairmat utilizza la Analysis Mode come visione di default quando apriamo un template dalla
schermata iniziale oppure quando apriamo un template attraverso la selezione del seguente
percorso: File → New Template Project → Generate Templates.
Come possiamo notare dando nuovamente un'occhiata alla figura 1.16, possiamo suddividere
idealmente la finestra di Fairmat in Analysis Mode in due parti: quella di sinistra, relativa ai
parametri e alle impostazioni, e quella di destra, relativa invece ai risultati della valutazione.
Nella parte in alto a sinistra possiamo scegliere il tipo di analisi che intendiamo condurre e le altre
impostazioni generali, come ad esempio lo scenario di riferimento per il progetto (si veda la voce
"Scenario"), la Trading Date (ovvero la data di negoziazione) e la Effective Date (ovvero la data di
inizio contratto), il tipo di dati richiesto (si veda la voce "Hour/Data Request Type") e il tipo di
calendario di riferimento (si veda la voce "Calendar").
In questa parte possiamo anche decidere se effettuare automaticamente un refresh dei dati di
mercato nel momento in cui dobbiamo lanciare una valutazione oppure se forzare un aggiornamento
dei dati di mercato cliccando sul comando “Refresh”.
Una volta che tutte le impostazioni sono state scelte, possiamo iniziare a far svolgere al programma
l'analisi che intendiamo effettuare cliccando sul comando “Run Analysis”.
Nella parte in basso a sinistra possiamo, invece, editare i parametri specifici del contratto (quelli
contrassegnati con il flag "Publish" nella Design Mode), ricercare i market data database
11
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(selezionando il tab Market Data), cambiare le impostazioni relative alla simulazione Monte Carlo
(selezionando il tab Valuation Settings) e leggere alcune note relative al contratto in esame
(selezionando il tab Notes).
Quando clicchiamo sulla descrizione di un parametro Fairmat ne mostra, nella colonna di destra, la
denominazione, il valore relativo (o i valori relativi), mentre nel box che si trova più in basso a
sinistra, ovvero nel box "Addition Details" Fairmat ne fornisce maggiori informazioni al riguardo.
Facendo doppio click sulla colonna “Value” apparirà una finestra la quale ci permetterà di inserire il
valore (o i valori) del parametro stesso.
Una volta portata a termine un'analisi, i principali risultati della medesima verranno riportati nel
pannello più in basso a destra. Facendo doppio click sulla riga relativa all'analisi appena compiuta,
nella parte più in alto a destra ci apparirà una finestra contenente una rappresentazione grafica e
ulteriori dettagli relativi alla medesima.
12
CAPITOLO 1 – INSTALLAZIONE E AVVIO
Vedremo ora come si presentano i menù principali di Fairmat. Con la figura 1.17 vediamo in
particolare come si presenta la barra dei menù principali.
(Figura 1.17: Barra dei menù principali)
Il Menù File
Il menù a cascata File (figura 1.18) ci permette di creare un nuovo progetto da zero senza titolo,
ovvero ex-novo (mediante la selezione del comando New Empty Project o la selezione del comando
New Template Project), o di aprire un file .fair già esistente da una cartella che lo contiene
(mediante la selezione del comando Open). Quando creiamo o generiamo un file .fair, gli altri
comandi dei menù principali diventano selezionabili.
(Figura 1.18: Menù File)
I comandi "Save" e "Save As" ci consentono semplicemente, e rispettivamente, o di salvare il file
creato con l'estensione .fair o di salvarlo con il nome desiderato in una destinazione o in una cartella
particolare. Notiamo che quando si seleziona il comando "Save As" Fairmat tiene in memoria
l'ultima cartella di salvataggio utilizzata.
Il comando "Merge With" ci permette di fondere, unire, più file con estensione .fair in un unico file
(compiendo appunto un merge, ossia una fusione, fra due o più file). In particolare, dato un file
aperto e con estensione .fair di nome A, se applichiamo il comando "Merge With" su un altro file,
sempre con estensione .fair, di nome B, tutti gli oggetti di quest'ultimo file verranno copiati e
trasferiti al file A; al termine del processo di merging, quindi, il file A conterrà sia i propri dati di
13
CAPITOLO 1 – INSTALLAZIONE E AVVIO
partenza, i propri dati iniziali, che i dati del file B e trasferiti da B ad A appunto.
I comandi "New Empty Project", "Open", "Save" sono anche presenti, con delle icone che li
richiamano graficamente, sulla tavolozza grafica del menù File situata sotto il menù principale del
programma.
Il Menù Edit
Il menù a cascata Edit (figura 1.19) contiene i comandi "Undo/Redo", "Show Editing History",
"Delete", "Cut", "Copy", "Paste".
(Figura 1.19: Menù Edit)
I comandi "Undo" e "Redo" ci consentono, rispettivamente, o di revocare un'azione compiuta su un
file .fair, o di muoversi avanti, ossia di riprendere un'azione precedentemente revocata con il
comando "Undo".
Il comando "Show Editing History" (figura 1.20) ci mostra una finestra con tutte le recenti azioni
che abbiamo impostato e compiuti su un file .fair.
I comandi "Delete", "Cut", "Copy" e "Paste" sono comandi attivi ed utilizzabili solo quando è attivo
anche l'ambiente Option Map e ci consentono, rispettivamente, di cancellare, tagliare, copiare ed
incollare oggetti creati appunto all'interno della Option Map dell'applicativo Fairmat.
(Figura 1.20: Menù Edit – Show Editing History)
14
CAPITOLO 1 – INSTALLAZIONE E AVVIO
Il Menù Analysis
Il menù a cascata Analysis (figura 1.21) ci permette di condurre un'analisi su un file .fair. E' bene
precisare che possiamo selezionare il menù Analysis solo e soltanto se è stato già aperto un file .fair.
(Figura 1.21: Menù Analysis)
Le analisi che possiamo condurre, in particolare, sono le seguenti: la Bivariate Sensitivity Analysis
(Analisi di Sensibilità effettuata congiuntamente su coppie di parametri), la Univariate Sensitivity
Analysis (Analisi di Sensibilità Univariata), la Dynamic and Volatility Analysis (Analisi sulla
Dinamica e sulla Volatilità), la Impact Analysis (Analisi degli Impatti), la Risk Analysis (Analisi del
Rischio), la Scenario (What If) Analysis (Analisi del Scenari possibili) e la Valuation (Valutazione).
Avremo modo di vedere nel dettaglio i vari tipi di analisi che possiamo condurre su Fairmat nel
Capitolo 4.
Il Menù Settings
Il menù a cascata Settings (figura 1.22) contiene diversi sottomenù contenenti a loro volta le
impostazioni utili per la progettazione in Fairmat. I sottomenù ricompresi all'interno del menù
Settings sono i seguenti:
(Figura 1.22: Menù Settings)
15
CAPITOLO 1 – INSTALLAZIONE E AVVIO
•
Project Preferences (figura 1.23): è un sottomenù che si riferisce a specifiche impostazioni
di un progetto da creare attraverso Fairmat (come ad esempio l'impostazione della Valuation
Date – ovvero della data di valutazione – o della Effective Date – ovvero della data di inizio
contratto). Il sottomenù Project Preferences comprende, a sua volta, ulteriori sottomenù:
a) Simulation Dates and Conventions
è un sottomenù utile per impostare la Trading Date, o Simulation Start Date, (ovvero la
data di negoziazione del contratto) e la Contract Initial Date, o Effective Date, la quale
costituisce il riferimento necessario per il reset delle date di pagamento in regime
"Advance" e per la corretta computazione temporale convenuta, e per le simulazioni
"Calendar" e "Convention". E' utile infatti sottolineare che la data impostata di default
dal programma sia per la Trading Date che per la Contract Intial Date è quella corrente al
momento dell'apertura del programma. E' bene precisare poi che le impostazioni di
default "Calendar" e "Convention" sono rispettivamente "Italy" e "Unadjusted". Qualora
il contratto oggetto di analisi preveda delle convenzioni diverse da queste ultime, e quindi
da quelle preimpostate di default dal programma, dovremo opportunamente modificare le
stesse anche perché tali impostazioni influenzano direttamente il procedimento elaborato
dal simulatore. Al fine di adeguare il conteggio dei giorni in modo da poter tenere conto
anche delle frazioni di giorno, si suggerisce l'utilizzo di appositi e specifici vettori di
trasformazione delle date. E' importante, infine, notare che un aggiornamento delle
Trading Date, o della Simulation Start Date, automaticamente provoca un aggiornamento
del date picker Simulation presente nella barra degli strumenti.
b) Analysis Preferences
è un sottomenù che contiene le impostazioni per:
b1) le sensitivity analysis (analisi di sensibilità): qualora, infatti, volessimo lanciare una
sensitivity analysis, questa voce di impostazione ci permette di impostare le
iterazioni nelle quali intendiamo suddividere il range bound ai fini della
medesima. Ad esempio per un parametro “Range” per la sensitivity analysis uguale a
+/- 0.80 e per un valore per il paramentro # of points (numero di punti) – sempre per
la medesima – pari a 5, il range si muove a partire dal valore -0.80 con passo 0.40,
incluso il valore nullo, eseguendo quindi 5 iterazioni in tutto. Ai fini dell'esecuzione
di una corretta sensitivity analysis, è consigliabile impostare per il parametro # of
points un valore corrispondente ad un numero dispari;
b2) le distribution analysis (analisi sulla distribuzione): tale voce di impostazione mostra
l'intervallo contenente l'X% della massa totale della distribuzione ed è utile per
condurre appunto una dettagliata analisi sulla distribuzione;
b3) le impact analysis (analisi degli impatti): tale voce di impostazione ci permette di
fissare il range percentuale di variabilità di un dato parametro per condurre appunto
una impact analysis;
b4) le risk analysis (analisi del rischio): tale voce di impostazione ci permette di fissare un
vettore di date di riferimento, utili per condurre appunto una risk analysis, o un
vettore di date di pagamento contrattuali. La risk analysis è un'analisi utile per
tracciare il profilo di rischio di un contratto derivato;
16
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.23: Menù Settings – Sottomenù Project Preferences)
•
Fairmat Prefereces (figure 1.24 e 1.25): è un sottomenù che si riferisce alle impostazioni
generali dell'interfaccia utente di Fairmat (come ad esempio il numero di decimali visibili
nello Status Panel, oppure il numero di repliche per le analisi reiterate). Accedendo al
sottomenù Fairmat Preferences ci apparirà una finestra con due tab principali:
a) Core Preferences
tale tab, a sua volta, si suddivide in altri tre tab:
1) General: selezionando tale tab possiamo:
– fissare il numero dei decimali visibili sugli output finali, mostrati sotto il pannello
Valuation dello Status Panel. Il valore impostato di default è 2;
– fissare il numero di analisi reiterate, ovvero il numero di volte per le quali le analisi
devono essere replicate, ripetute; quando attiviamo un'analisi reiterata (selezionando
il percorso Settings → Repeated Analysis) dobbiamo, infatti, anche impostare il
numero di test da reiterare. Il valore impostato di default è 10;
– rendere il codice output di Fairmat coerente con il codice Latex, flaggando il checkbox relativo “Generate Latex Friendly outputs”; per cui, ad esempio, l'espressione
algebrica E[MTM|MTM >= 0] verrà scritta nel seguente modo $\mathbb{E}[MTM|
MTM\geq0]$;
– di impostare il “Verbosity Level" (ovvero il livello di verbosità) come un numero
intero compreso tra 0 (corrispondente a nessun output) e 2 (corrispondente a più
informazioni di output). Il “Verbosity Level” regola la quantità di informazioni di
debug in Fairmat, e i suoi plug-in, e scrive nel tab Log dello Status Panel mentre
sono in corso le valutazioni o altri computi. Il valore 0 significa che non verrà scritto
nessun output di debug, mentre l'incremento dei valori positivi fa sì che Fairmat
generi una quantità crescente di informazioni di debug (si noti che i valori di
verbosity diversi da 0 sono di solito utilizzati per individuare dei problemi e possono
comportare un allungamento dei tempi di elaborazione e di analisi);
– di impostare il Market Data Provider di riferimento: in tal modo andiamo ad
17
CAPITOLO 1 – INSTALLAZIONE E AVVIO
impostare il data provider a cui Fairmat deve far riferimento per il download dei dati
di mercato. In particolare, i dati di mercato scaricati e i parametri dei modelli
calibrati utilizzati per le valutazioni vengono memorizzati in un database all'interno
del nostro PC. Qualora questi non fossero disponibili nel nostro database interno,
Fairmat si riferisce ad uno (o più) Market Data Provider, in modo tale che tutte le
informazioni di mercato siano immediatamente disponibili. Se il Market Data
Provider è Fairmat.com (Market Data Provider selezionabile attraverso il seguente
percorso Modeler → Preferences → Market Data Provider → Fairmat.com),
dovremo inserire le credenziali del nostro account Fairmat;
2) Preview: nel quale possiamo fissare in anteprima il numero di percorsi e di passi
temporali nell'ambito del tab “Preview” dell'editor Stochastic Processes;
3) Advanced: nel quale possiamo definire alcune impostazioni di tipo avanzato;
b) Plug-in Preferences
tale tab definisce le impostazioni utente relative alle estensioni e ai plug-in di Fairmat;
(Figura 1.24: Menù Settings – Sottomenù Fairmat Preferences → Core Preferences)
18
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.25: Menù Settings – Sottomenù Fairmat Preferences → Plug-in Preferences,
scelta del Market Data Provider)
•
Numerical Settings (figure 1.26 e 1.27): è un sottomenù che ci permette di definire le
condizioni e il comportamento di un processo durante una simulazione Monte Carlo.
Nella finestra principale del sottomenù Numerical Settings, ossia la finestra Project
Numerical Settings, possiamo:
– definire il campo "# of discrete timesteps" il quale ci permette di impostare il numero di
step temporali che verranno simulati per ciascun percorso;
– definire il campo "# of simulated path" il quale ci permette di impostare il numero di
percorsi per la simulazione Monte Carlo;
– attivare la funzionalità "Generate a repeatable random sequence", flaggando il relativo
check-box; in tal modo decidiamo se simulare fissando o meno la testa di serie del
generatore di numeri casuali (nel caso avessimo fissato una testa di serie);
– definire il campo "Random Seed (integer)" il quale ci permette di impostare il valore
della testa di serie da utilizzare. Il valore riportato in questo campo deve essere
necessariamente un numero intero;
Premendo il bottone "Advanced Settings", invece, possiamo impostare alcune preferenze
connesse alla valutazione Monte Carlo ai minimi quadrati. Nella finestra Advance Simulation
Settings possiamo definire:
– il menù cascata "Base" con il quale possiamo scegliere differenti impostazioni base da
utilizzare per stimare la funzione descrivente i valori continui;
– il campo "Degree of polynomial" (ossia grado del polinomio) con il quale possiamo fissare
il massimo grado da utilizzare nel problema dei minimi quadrati, per i termini misti ed
omogenei;
– il campo "Use also mixed terms" con il quale possiamo decidere se usare (flaggando
l'apposito check-box) o meno termini misti nei casi in cui i valori continui dipendano da più
di un fattore;
– il menù a cascata "Predictor" con il quale possiamo scegliere quale set di variabili utilizzare
per la stima del valore di continuazione (utilizzando nella valutazione di opzioni di tipo
Americano);
– il menù a cascata "Random number generation" con il quale possiamo impostare il tipo di
generatore di numeri casuali; le scelte possibili sono o “Pseudo-Random” o “Quasi Random
(low discrepance)”;
19
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.26: Menù Settings – Sottomenù Numerical Settings 1)
(Figura 1.27: Menù Settings – Sottomenù Numerical Settings 2)
•
Plug-ins Management (figure 1.28, 1.29 e 1.30): è un sottomenù che ci permette di installare
e gestire i plug-ins inseriti. All'interno di tale sottomenù vi sono tre sezioni diverse:
1) Installed Plug-ins: in questa prima sezione possiamo verificare i plug-ins che sono
attualmente installati nei nostri sistemi locali. Sempre in questa sezione possiamo
selezionare i comandi “Refresh”, “Enable” e “Disable”. Il comando “Refresh” ci consente,
appunto, di effettuare il refresh dei plug-ins installati; i comandi “Enable” e “Disable” ci
consentono, invece, rispettivamente di attivare o disattivare plug-ins;
2) Available On-line Plug-ins: in questa seconda sezione possiamo vedere i plug-ins che
sono disponibili on-line o per essere installati o per essere semplicemente aggiornati. Per
20
CAPITOLO 1 – INSTALLAZIONE E AVVIO
installare o aggiornare un plug-in dovremo semplicemente flaggare il check-box affianco al
suo nome nella lista dei plug-ins disponibili e premere il comando “Install/Update”. Il
sistema metterà in conto le eventuali dipendenze, qualora ci siano, fra i vari plug-ins;
3) Advanced: in questa terza sezione possiamo realizzare operazioni di tipo avanzato sui
plug-ins. I comandi selezionabili in quest'ultima sezione sono “Install local Plug-in” o
“Repair Repository”. Con il comando “Install local Plug-in” possiamo installare un plug-in
da un file locale. Possiamo sfruttare questo comando nel momento in cui stiamo sviluppando
dei plug-ins. I pacchetti di plug-ins hanno solitamente le estensioni .zip oppure .ddl. In
questo caso specifico dovremo allora cliccare sul pacchetto di plug-ins che desideriamo
installare e selezionare uno o più file contenuti al suo interno. Con il comando “Repair
Repository” consentiamo a Fairmat di resettare e riparare il repository dei plug-ins locali.
Dobbiamo selezionare tale comando qualora notiamo delle inconsistenze oppure dei
problemi ai sistemi di plug-ins installati;
(Figura 1.28: Menù Settings – Sottomenù Plug-ins Settings → Installed Plug-ins)
(Figura 1.29: Menù Settings – Sottomenù Plug-ins Settings → Available On-line Plug-ins)
21
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.30: Menù Settings – Sottomenù Plug-ins Settings → Advanced)
Il Menù Tools
Il menù a cascata Tools contiene utili strumenti di Product Design e Market Data. Le funzionalità di
tale menù sono disponibili solo quando sono aperti i file dei progetti. Di default Fairmat
Professional carica i seguenti tools (o strumenti): il Goal Seeker e il Market Data Manager.
A) Goal Seeker
Lo strumento Goal Seeker (figure 1.31 e 1.32) ci permette di trovare gli insiemi dei valori, o
delle soluzioni, o sottoinsiemi dei parametri del modello ottimizzando le metriche definite nel
contratto in esame. In particolare, i “Goals” (obiettivi) attualmente disponibili sono:
– “Maximization” (massimizzazione);
– “Minimization” (minimizzazione);
– “Level Finding” (accertamento livello);
Le metriche contrattuali attualmente supportate sono le seguenti:
– “Mark to Market” (Valuation);
– “Average Standard Deviation of Cashflows” (Deviazione Standard media dei flussi di
cassa);
– “Average Cvar – Conditional Value at Risk – of Cashflows (valore a rischio condizionale
medio dei flussi di cassa);
Per definire dove ricercare i valori ottimali, per ogni parametro dobbiamo specificare i limiti
entro i quali restringere la ricerca. I parametri che definiscono i limiti in questione possono
essere specificati nel campo “Range” (si veda la figura 1.31). I parametri da ottimizzare, invece,
devono essere inseriti nel parametro “Model parameters to optimize” (si veda la figura 1.32).
22
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Figura 1.31: Menù Tools – Tool Goal Seeker 1)
(Figura 1.32: Menù Tools – Tool Goal Seeker 2)
B) Market Data Manager
I dati di mercato scaricati e i parametri dei modelli calibrati utilizzati per la valutazione sono
salvati in un database nel nostro PC. Il database, inizialmente vuoto, viene gradualmente
riempito con i dati di mercato e di calibrazione da noi richiesti mediante il comando “Calibrate
model using data provider”. Si noti che se i dati di mercato non sono già disponibili nel
database, Fairmat automaticamente andrà ad invocare un data provider dal quale scaricare i dati
di mercato necessari. Dopo di ché, sia i dati di mercato che i parametri di mercato vengono
immagazzinati nel nostro database interno. Ciò incrementa in misura significativa la velocità di
risposta del sistema dal momento che sia il download dei dati di mercato che le calibrazioni
vengono eseguiti solo una volta e solo quando da noi richiesto.
Selezionando il percorso Tools → Date → Market Data Management possiamo accedere a
questo database interno al quale Fairmat si riferisce.
Il tab Browse Calibrations (figura 1.33) ci mostra, in ogni linea, informazioni riguardanti
ciascuna calibrazione, come il mercato di riferimento, la data di calibrazione e i valori dei
parametri riferiti a quella data. C'è anche un filtro che ci permette di ricercare i dati per modello,
tool, mercato di riferimento ed intervallo temporale.
Il tab “Browse Market Data” (figura 1.34) mostra, per ogni data (Date), i dati di input utilizzati
23
CAPITOLO 1 – INSTALLAZIONE E AVVIO
da Fairmat per calibrare il modello.
Alla stessa data possono corrispondere più linee che differiscono nel tipo. Ciò in quanto, allo
stesso tempo, diversi modelli possono richiedere diversi dati di input.
Nell'esempio riportato nelle figure 1.33 e 1.34, il modello Jarrow-Yildrim necessita sia
dell'oggetto Interest Rate Market Data (ovvero del dato relativo al tasso di interesse di mercato)
che dell'oggetto Market Data. Information Market Data (ovvero dell'indicazione del mercato di
riferimento). Un modello più semplice, come ad esempio il modello Hull e White ad un
parametro, può richiedere solo il primo dei due oggetti elencati.
(Figura 1.33: Menù Tools – Tool Market Data Manager → Browse Calibration)
(Figura 1.34: Menù Tools – Tool Market Data Manager → Browse Market Data)
Per quanto riguarda sempre il tool Market Data Manager, è bene infine precisare che l'attuale
versione di Fairmat presenta alcune limitazioni. In particolare:
– i dati di mercato possono essere recuperati soltanto a mercati chiusi, ovvero a sedute
borsistiche concluse;
– il recupero dei dati relativi ai tassi di interesse di mercato è ottimizzato solo per i mercati EU
24
CAPITOLO 1 – INSTALLAZIONE E AVVIO
(Europa), US (Stati Uniti), CH (Svizzera), JP (Giappone) e GB (Gran Bretagna);
– se dobbiamo cambiare la data prima di lanciare un'analisi, dovremo aggiornare i modelli
stocastici manualmente cliccando su di essi e selezionando il comando “Calibrate model
using data provider”;
In tal senso le future versioni dell'applicativo Fairmat permetteranno di aggiornare automaticamente
i dati e i modelli e forniranno maggiori dettagli su come i modelli siano stati calibrati.
Il Menù Help
Il menù a cascata Help (figura 1.35) contiene una voce denominata “Contents” con la quale verremo
reindirizzati ad un documento di supporto, aiuto ed assistenza (nelle versioni attualmente disponibili
di Fairmat, tale documento è disponibile solo in lingua inglese). Fairmat Help funziona anche offline.
(Figura 1.35: Menù Help)
25
CAPITOLO 2
IL LINGUAGGIO
PER LA
DESCRIZIONE
DEI PAYOFF
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Fairmat è dotato di un semplice linguaggio di scripting i cui elementi base sono i parametri (ovvero
le costanti – o Scalar –, vettori – o Vectors –, le matrici – o Matrices), i processi stocastici (o
Stochastic Processes) e le funzioni (o Functions). Possiamo accedere alla creazione di questi oggetti
dal menù che si trova nell'angolo in alto a sinistra della pagina principale (figura 2.1).
(Figura 2.1: Fairmat – Elementi di base)
Combinando questi oggetti attraverso degli operatori funzionali, possiamo creare facilmente delle
espressioni; sono disponibili diverse funzioni ad uso standard e diversi operatori predefiniti, ma
l'utente può anche definirne di propri e nuovi.
Un suggerimento: possiamo eventualmente testare le espressioni create con Fairmat e utilizzarle in
modo iterativo nella Fairmat Console dello Status Panel, disponibile nella parte bassa della
schermata principale.
Per esempio (figura 2.2), dopo aver definito uno Scalar di nome “Date”, posto uguale alla data del
30/12/2003, editando nella Fairmat Console “Day(Date)”, Fairmat ci mostrerà il valore
dell'espressione creata (nel nostro caso pari a 30).
(Figura 2.2: Esempio di testing di un'espressione attraverso la Fairmat Console)
26
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
I differenti tipi di funzione disponibili in Fairmat sono i seguenti:
–
–
–
–
–
–
–
–
–
–
–
–
Assets' Sets Functions;
Date and Time Functions;
Financial Functions;
Functions on Vector and Matrices;
Interest Rate Functions;
Interval Functions;
Selection Functions;
Standard Functions;
Special Functions and Distribution Functions;
Other Functions;
Reserved Symbols;
Random Variables Generator;
Esamineremo ora in dettaglio ciascuno dei tipi di funzione appena elencati con l'eccezione delle
Special Functions e delle Distribution Functions.
Le espressioni di Fairmat utilizzano le impostazioni di tipo internazionale per cui se nel nostro PC il
separatore dei decimali è costituito dalla virgola (' , '), ciò si rifletterà nelle espressioni create con
Fairmat.
Nella tabella 2.1 sottoriportata è possibile vedere come lo stesso payoff venga visualizzato in modo
differente utilizzando due diverse località di riferimento:
(Tabella 2.1 – Impostazioni locali per la definizione del payoff)
Località di
riferimento
Stati Uniti e
rate (1; 2.5; @V1)
Inghilterra
Italia e resto
Rate (1; 2,5; @V1)
d'Europa
Payoff
Fairmat riconosce, inoltre, il simbolo % (percentuale) per cui le seguenti espressioni sono del tutto
equivalenti: a = 0,12 oppure a = 12%.
Assets' Sets Functions
27
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Le Assets' Sets Functions sono funzioni che possono essere utilizzate nelle espressioni di Fairmat e
che hanno come argomento degli insiemi di attività (o asset set). Di conseguenza si tratta di un tipo
di funzioni che lavorano su un determinato asset set di riferimento indicato dall'utente.
Nella lista che segue, e che elenca i tipi di Assets' Sets Functions disponibili in Fairmat, @asset.set
costituisce il riferimento all'insieme di attività (o asset set) sul quale la funzione deve lavorare
mentre expr indica una comune espressione.
Le Assets' Sets Functions permettono di effettuare operazioni di tipo aritmetico quali, ad esempio, la
ricerca del valore massimo (o del valore minimo) all'interno di un insieme di valori oppure il
calcolo della media di un insieme di valori e così via.
La variabile bi rappresenta l'indice corrente (o attuale) ricompreso entro l'insieme dei valori di
riferimento e può assumere valori a partire da 1 fino al numero massimo di elementi contenuti
nell'asset set di riferimento. In particolare:
•
•
•
•
•
•
•
ASMax (@asset_set; {expr}): calcola il valore massimo fra i valori dell'espressione expr
ottenuti durante la valutazione della stessa per ciascun elemento dell'asset set di riferimento;
ASMin (@asset_set; {expr}): calcola il valore minimo fra i valori dell'espressione expr
ottenuti durante la valutazione della stessa per ciascun elemento dell'asset set di riferimento;
ASSum (@asset_set; {expr}): calcola la somma dei valori dell'espressione expr ottenuti
durante la valutazione della stessa per ciascun elemento dell'asset set di riferimento;
ASMean (@asset_set; {expr}): calcola la media aritmetica semplice dei valori
dell'espressione expr ottenuti durante la valutazione della stessa per ciascun elemento
dell'asset set di riferimento;
ASWSum (@asset_set; @w; {expr}): calcola una somma ponderata, lungo il vettore dei
pesi w, dei valori dell'espressione expr ottenuti durante la valutazione della stessa per
ciascun elemento dell'asset set di riferimento. Il vettore dei pesi w deve contenere lo stesso
numero di elementi dell'asset set di riferimento (in altre parole: la lunghezza del vettore w
deve coincidere con la grandezza, in termini di numeri di elementi, dell'asset set di
riferimento);
ASProd (@asset_set; {expr}): calcola il prodotto fra i valori dell'espressione expr ottenuti
durante la valutazione della stessa per ciascun elemento dell'asset set di riferimento. Tale
funzione può essere utile per la costruzione di funzioni di segnalazione (o indication
functions);
ASCount (@asset_set; {expr}): conta il numero di volte che la valutazione dell'espressione
expr, interagendo sugli elementi dell'asset set di riferimento, è positivo. Tale funzione
assume le caratteristiche quindi di un contatore;
Nelle espressioni argomento delle Assets' Sets Functions (ovvero expr) possiamo utilizzare il
simbolo “V”, che rappresenta il valore del generico elemento dell'asset set di riferimento alla data
attuale (o in corso) durante la corrente realizzazione. Usando l'operatore di indicizzazione, ovvero
[ ], possiamo accedere al valore del generico elemento ad una specifica data. Per esempio V[x]
indica il valore del generico elemento “V” alla data “x”.
Per comprendere appieno le Assets' Sets Functions, vediamo ora brevemente alcuni esempi.
Primo esempio: comparazione fra espressioni di diversa estensione
Supponiamo di avere un problema definito in uno space assets (spazio di assets) del tipo S = V1, V2,
28
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
…, Vn e di definire un asset set del tipo K = {V1, V2, V3}.
Nel contesto dell'asset set definito valgono le seguenti equivalenze fra espressioni:
– ASMax (@K; {V[5]/V[0] – 1}) equivale all'espressione
max(V1[5]/V1[0] – 1; V2[5]/V2[0] – 1; V3[5]/V3[0] – 1);
– ASProd (@K; {V[5]/V[0] – 1}) equivale all'espressione
(V1[5]/V1[0] – 1)*(V2[5]/V2[0] – 1)*(V3[5]/V3[0] – 1);
Secondo esempio: verifica della realizzazione di una condizione
Su una data realizzazione, la seguente espressione restituisce il numero di elementi nell'asset set K
che hanno avuto un incremento maggiore del 3% nel periodo compreso fra il periodo 4 e il periodo
6:
– ASCount (@K; {V[6]/V[4] > 3%}) la quale è equivalente alla seguente espressione
– ASCount (@K; {iif(V[6]/V[4] > 3%; 1; 0)})
Date and Time Functions
Le Date and Time Functions sono funzioni che possono essere utilizzate per manipolare dei valori
di tipo temporale. Fra le Date and Time Functions più importanti possiamo annoverare le seguenti:
•
Accrual (date; @payments): restituisce il periodo totale di maturazione con riferimento ad
un dato istante temporale (date) e ad una data sequenza di date di pagamento (payment
dates) definite dal vettore payments;
Un esempio ci aiuterà a comprendere meglio l'utilizzo di tale funzione.
Definiamo la data “Date”, variabile di tipo Scalar, come 30/06/2009, e il vettore payments come
[06/10/2008; 05/10/2009; 04/10/2010]; supponiamo di voler calcolare il periodo di maturazione fra
le “payment dates” 06/10/2008 e 05/10/2009, ovvero i primi due elementi del vettore payments; la
funzione Accrual (date; @payments), sopra definita, restituirà come risultato il valore 0,7333423.
In particolare, infatti, assumendo la data del 30/06/2009 (ossia il valore corrispondente alla variabile
“Date”) sia come Effective Date che come Valuation Date i periodi da dover prendere in
considerazione per il calcolo del periodo di maturazione, ovvero (30/06/2009 – 06/10/2008) e
(05/10/2009 – 06/10/2008), verranno così convertiti da Fairmat in valori numerici (tenendo presente
che l'anno 2008 è stato un anno bisestile mentre il 2009 non lo è stato):
– (30/06/2009 – 06/10/2008) →
[(31/12/2008 – 06/10/2008)/366] + [(30/06/2009 – 31/12/2008)/365] =
= 87/366 + 180/365 = 0,2377049 + 0,4931507 = 0,7308556
– (05/10/2009 – 06/10/2008) →
[(31/12/2008 – 06/10/2008)/366] + [(05/10/2009 – 31/12/2008)/365] =
= 87/366 + 277/365 = 0,2377049 + 0,7589041 = 0,9966090
Per cui la funzione Accrual calcolerà il seguente rapporto:
(30/06/2009 – 06/10/2008) / (05/10/2009 – 06/10/2008) = 0,7308556/0,9966090 = 0,7333423.
•
•
Day (Date): restituisce il giorno del mese data una serie di date numeriche o una stringa di
date (“Date”);
Month (Date): restituisce il mese in un formato numerico data una serie di date o una stringa
di date (“Date”);
29
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
•
Dayofweek (Date): restituisce il giorno della settimana in un formato numerico per una serie
di date numeriche o per una stringa di date (“Date”). L'ordine è 0 – 6 e va dalla Domenica
(Sunday) al Sabato (Saturday);
Con un breve esempio cercheremo di illustrare ora l'utilizzo di tutte e tre le funzioni appena
elencate. Definita la data 24/10/2008:
– la funzione Day (Date) restituirà 24;
– la funzione Month (Date) restituirà 10;
– la funzione Dayofweek (Date) restituirà 5 ovvero Friday (in quanto il giorno 24/10/2008 era
un Venerdì);
•
OnEvery (date; frequency): restituisce valore 1 (ossia VERO, “True”) solo se la data “Date”
è un multiplo di frequency, 0 altrimenti (ovvero FALSO, “False”, altrimenti);
Anche per quest'ultima funzione ne vediamo un breve esempio al fine di comprenderne meglio il
funzionamento e l'utilizzo. In particolare:
OnEvery (t; 0,25) è una funzione che restituirà 1 (ossia VERO, “True”) per tutte le t che risultino
multiple di un quarto (0,25).
Financial Functions
Le Financial Functions sono funzioni che calcolano ed elaborano informazioni di tipo finanziario.
Fra le Financial Functions disponibili in Fairmat si possono annoverare in particolare le seguenti:
•
•
bscall (rf; S0; X; Sigma; Maturity): calcola il prezzo di un'opzione call di tipo europeo
utilizzando il modello di Black e Scholes e la sua formula;
bsput (rf; S0; X; Sigma; Maturity): calcola il prezzo di un'opzione put di tipo europeo
utilizzando il modello di Black e Scholes e la sua formula;
Riguardo ai parametri sui quali si basa il modello di Black e Scholes ricordiamoci, in particolare,
che:
– rf indica il rendimento di un titolo privo di rischio (o risk free);
– S0 indica il prezzo dell'attività sottostante il contratto d'opzione (prezzo put);
– X indica lo strike price (o prezzo d'esercizio) dell'opzione;
– Sigma (o σ) indica la deviazione standard del sottostante (ovvero la sua volatilità);
– Maturity (o scadenza) indica la data di scadenza (ovvero, nel caso specifico delle opzioni di
tipo europeo, di possibile esercizio dell'opzione);
Functions on Vectors and Matrices
Un vettore è un dato di tipo strutturato che consiste in un gruppo di elementi i quali sono accessibili
30
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
mediante l'indicizzazione. Con Fairmat possiamo creare vettori comuni contenenti valori reali (quali
espressioni o date) e definiti come insiemi ordinati di elementi: ogni elemento del vettore potrà
essere un numero, una costante (ovvero uno Scalar) oppure un'espressione o una data. Un vettore di
nome v può essere utilizzato nelle espressioni di Fairmat nei seguenti modi:
– se lo stesso vettore deve essere utilizzato come argomento di una funzione, esso dovrà
essere passato come riferimento mediante la sintassi @v;
– per accedere al valore degli elementi contenuti nello stesso vettore, si deve utilizzare
l'operatore di indicizzazione [ ]. Per esempio v[1] restituirà il valore del primo elemento
presente nel vettore v. Si noti bene che gli indici dei vettori in Fairmat sono in base uno,
ovvero assumono valori da 1 fino a N, dove N indica il numero totale di elementi che
compongono il vettore v;
Per le funzioni che accettano come argomento i vettori si veda il sottoparagrafo dedicato alle Vector
Functions.
Allo stesso modo, una matrice di nome m può essere utilizzata nelle espressioni di Fairmat come
segue:
– se la stessa matrice deve essere utilizzata come argomento di una funzione, essa dovrà essere
passata come riferimento mediante la sintassi @m;
– per accedere al valore degli elementi contenuti nella stessa matrice, si deve utilizzare
l'operatore di indicizzazione [riga; colonna]. Per esempio m[2; 4] restituirà il valore
dell'elemento m2, 4 ovvero il valore dell'elemento della matrice m che si trova nella seconda
riga e nella quarta colonna. Gli indici sono, anche nel caso delle matrici, come nel caso dei
vettori, in base uno, per cui il primo elemento della matrice m, ovvero l'elemento m1, 1 è m
[1; 1];
Per le funzioni che accettano come argomento le matrici si veda il sottoparagrafo dedicato alle
Matrix Functions.
Vector Functions
In Fairmat sono disponibili diverse funzioni che accettano come argomento vettori ed espressioni e,
nel contesto di tali funzioni, vi sono alcuni simboli interni che possono essere utilizzati per
parametrizzare l'espressione expr.
Più nello specifico:
– x0 indica il valore del primo elemento del vettore v;
– xa indica il valore dell'elemento corrente, attuale, del vettore v;
– xb indica il valore dell'elemento del vettore v che era l'elemento corrente, attuale, nel corso
della precedente iterazione della funzione;
– xi indica l'indice corrente, attuale, nell'iterazione della funzione in corso sul vettore v;
Le Vector Functions sono molto simili nel loro funzionamento alle Interval Functions (che
esamineremo nel dettaglio fra qualche paragrafo). L'espressione generale delle Vector Functions è la
seguente: vector_function (@vec; {expr}; [start]; [N]). Dove il simbolo @vec indica il vettore
passato come riferimento e expr è un'espressione. Start e N definiscono, rispettivamente, la
posizione dell'indice di partenza e il numero di elementi del vettore considerati. Start e N sono
parametri opzionali per cui non è sempre necessario esplicitarli nella funzione; ai fini della
31
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
notazione d'ora in avanti i parametri opzionali saranno mostrati entro le parentesi quadre (ad
esempio [N]). E' bene ricordare ancora una volta che gli indici del vettore sono in base uno, per cui
il punto di partenza di default è 1, se non viene esplicitato diversamente nella dichiarazione della
funzione. Infatti le impostazioni di default dei parametri opzionali sono start = 1 e N =
lenght(@vec) – start + 1.
Le Vector Functions attualmente disponibili in Fairmat sono le seguenti:
•
•
•
•
•
•
•
•
AMax (@vec; {expr}; [start]; [N]): restituisce il valore massimo dell'espressione expr
valutata dall'indice della posizione di partenza del vettore vec (ovvero start) per il numero N
di elementi considerati del vettore stesso;
AMin (@vec; {expr}; [start]; [N]): restituisce il valore minimo dell'espressione expr
valutata dall'indice della posizione di partenza del vettore vec (ovvero start) per il numero N
di elementi considerati del vettore stesso;
ACount (@vec; {expr}; [start]; [N]): restituisce il numero di volte che il valore
dell'espressione expr, valutata dall'indice della posizione di partenza del vettore vec (ovvero
start) per il numero N di elementi considerati del vettore stesso, è positivo;
ASum (@vec; {expr}; [start]; [N]): restituisce la somma dei valori dell'espressione expr
valutata dall'indice della posizione di partenza del vettore vec (ovvero start) per il numero N
di elementi considerati del vettore stesso;
AMean (@vec; {expr}; [start]; [N]): restituisce la media dei valori dell'espressione expr
valutata dall'indice della posizione di partenza del vettore vec (ovvero start) per il numero N
di elementi considerati del vettore stesso;
AProd (@vec; {expr}; [start]; [N]): restituisce il prodotto dei valori dell'espressione expr
valutata dall'indice della posizione di partenza del vettore vec (ovvero start) per il numero N
di elementi considerati del vettore steso;
AWSum (@vec; @weight_vec; {expr}): restituisce la somma ponderata dei valori
dell'espressione expr valutata interagendo sugli elementi del vettore vec ed utilizzando,
come pesi, i valori del vettore weight_vec. Le dimensioni dei vettori vec e weight_vec
devono essere le stesse;
AFirst (@vec; {expr}; [start]; [N]): restituisce il primo indice al quale corrisponde
quell'elemento del vettore vec che, dall'indice della posizione di partenza del vettore vec
stesso (ovvero start) per il suo numero N di elementi considerati, verifica l'espressione expr.
Qualora la funzione restituisca il valore 0 significa che la condizione non è mai stata
soddisfatta durante tutto il ciclo di iterazione;
Related Functions
Le Related Functions sono funzioni che restituiscono un determinato valore da un vettore; quindi
anche in questo caso si tratta di funzioni che agiscono sui vettori.
Fra le Related Functions disponibili in Fairmat possiamo annoverare le seguenti:
•
•
•
AFirst (@vec): restituisce il valore del primo elemento del vettore vec;
ALast (@vec): restituisce il valore dell'ultimo elemento del vettore vec;
ALen (@vec): restituisce il numero di elementi contenuti nel vettore vec. In altre parole tale
funzione permette di determinare la lunghezza del vettore vec;
32
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
•
Lenght (@vec): restituisce il numero di elementi contenuti nel vettore vec. In altre parole
tale funzione permette di determinare la lunghezza del vettore vec per cui tale funzione è
del tutto equivalente alla precedente ALen (@vec);
Alcuni esempi sull'utilizzo delle Vector Functions
1) Se vec1 è un vettore così definito [0, 1, 5, 3, 4, 2] e funz1 è una funzione così definita fun1 =
2*x, allora:
– la funzione AMax (@vec1; {fun1(xa)}) restituirà 10 (ovvero 2*5);
– la funzione AMax (@vec1; {fun1(xi)}) restituirà 12 (ovvero 2*6);
in quanto xa indica il valore massimo presente fra i valori di vec1, che è pari a 5, mentre xi
indica il valore massimo assunto dall'indice i, che (invece) è pari a 6.
2) Se vec1 è un vettore così definito [.1, .5, .3, .4, .2] possiamo scrivere le seguenti espressioni
per la vector function AMax:
– AMax (@vec1; {xa} che restituisce .5 (in quanto si parte, di default, dal primo elemento di
vec1 fino ad arrivare a N, che è uguale a lenght(@vec1) – start + 1 = 5 – 1 + 1 = 5);
– AMax (@vec1; {xa}; 3) che restituisce .4 (in quanto si parte dal terzo elemento del
vettore vec1 fino ad arrivare a N, che è uguale a lenght(@vec1) – start + 1 = 3 – 1 + 1 =
3; in pratica con queste impostazioni è come se il vettore vec1 fosse di soli 3 elementi
anziché di 5);
– AMax (@vec1; {xa}; 3; 2) il quale restituisce .3 (in quanto si parte dal terzo elemento del
vettore vec1 fino ad arrivare a N, che è uguale a lenght(@vec1) – start + 1 = 2 – 1 + 1 =
2, perché N è stato definito pari a 2; in buona sostanza, con queste impostazioni, è come se
il vettore vec1 fosse di due soli elementi partendo però dal terzo elemento; in altre parole
ancora, con queste impostazioni è come se il vettore vec1 fosse così definito: [.3, .2]);
3) Se vector è un vettore contenente i valori seguenti [.5, .7, 1.5] la seguente espressione:
ASum (@vector; {Bond( xa ; 2; @v1)}; 1) equivale alla seguente:
Bond (vector[1]; 2; @v1) + Bond (vector[2]; 2; @v1) + Bond (vector[3]; 2; @v1)
(Avremo modo di vedere nel dettaglio la funzione Bond fra qualche paragrafo);
4) La seguente espressione restituisce il minimo di una serie di prezzi sottostanti relative a date
fornite da un generico vettore A: AMin (@A; {v1[xa]/v1[xb – 1]}; 2);
Matrix Functions
Fra le Matrix Functions disponibili in Fairmat possiamo annoverare le seguenti:
•
•
•
•
MRows (@m): restituisce il numero di righe della matrice m;
MColumns (@m): restituisce il numero di colonne della matrice m;
MRows (@m; row_index): restituisce il riferimento alla riga della matrice m con indice pari
al valore di row_index;
MColumns (@m; column_index): restituisce il riferimento alla colonna della matrice m con
indice pari al valore di column_index;
33
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Le funzioni MRow (@m; row_index) e MColumns (@m; column_index) restituiscono in pratica il
riferimento ad una riga o ad una colonna della matrice m; in questo modo possiamo richiamare una
qualsiasi delle Vector Functions descritte nel paragrafo precedente, passando però, in questi casi,
come riferimento anziché un vettore, una riga o una colonna della matrice m.
Un esempio ci aiuterà a comprendere al meglio il funzionamento e l'utilizzo delle Matrix Functions
appena illustrate.
La seguente espressione calcola il valore massimo della seconda riga della matrice m:
AMax (Mrow(@m; 2); xa).
Interest Rate Functions
Le Interest Rate Functions sono funzioni che hanno come oggetto dei tassi di interesse e che
restituiscono come valore dei tassi di interesse. All'interno della macrocategoria delle Interest Rate
Functions possiamo distinguere tre categorie di funzioni:
1) le Interest Rate Conversion Functions;
2) le Deterministic Interest Rate Functions; e
3) le Stochastic Interest Rate Functions;
Interest Rate Conversion Functions
Le Interest Rate Conversion Functions sono funzioni che permettono di convertire un tasso di
interesse espresso sotto un determinato regime in un tasso di interesse equivalente sotto un altro
regime – ricordandoci che i regimi di tassi di interesse più diffusi sono quello semplice, quello
composto e quello composto per m volte l'anno.
Fairmat dispone di quattro diverse Interest Rate Conversion Functions. Fra queste funzioni
possiamo distinguere le Interest Rate Conversion Functions che dipendono dalla scadenza (o
maturity) n e quelle che non dipendono da essa.
Rientrano nella prima sottocategoria le funzioni Rc2Rs e Rs2Rc; rientrano, invece, nella seconda
sottocategoria le funzioni Rc2Rm e Rm2Rc.
Più nel dettaglio:
•
•
Rc2Rs (Rc; n): restituisce il tasso di interesse semplice, a scadenza n, partendo dal tasso di
interesse composto Rc;
Rs2Rc (Rs; n): restituisce il tasso di interesse composto, a scadenza n, partendo dal tasso di
interesse semplice Rs;
Rc e Rs sono entrambi espressi in termini di tassi di interesse annuali.
Le prime due funzioni appena esplicitate si basano sull'equazione [2.1] nella quale il tasso di
interesse composto, a scadenza n, Rc(n) viene comparato con l'equivalente tasso di interesse
semplice (sempre a scadenza n), Rs(n):
e Rc ( n ) n  1  Rs(n)n
[2.1]
La [2.1] è risolvibile sia per Rc(n) che per Rs(n).
34
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Alcuni esempi ci aiuteranno a comprendere al meglio l'utilizzo delle due funzioni appena
esplicitate.
Ipotizziamo un tasso di interesse composto a 6 mesi, Rc, pari al 5% (tasso annuo). L'equivalente
tasso di interesse semplice a 6 mesi, Rs, sarà dato da Rc2Rs (Rc; n) = Rc2Rs (0,05; 0.5) e quindi
sarà pari al tasso del 5,063% annuo. L'equivalente tasso di interesse semplice a 3 mesi, invece,
ovvero Rc2Rs (Rc; n) = Rc2Rs (0,05; 0.25), sarà pari al tasso del 5,031% annuo.
Notiamo come l'equivalenza del tasso semplice Rs e con il tasso composto Rc, e viceversa, dipenda
dalla scadenza n.
•
•
Rc2Rm (Rc; m): restituisce il tasso di interesse composto per m volte l'anno, Rm, partendo
dal tasso di interesse composto annuo Rc;
Rm2Rc (Rm; m): restituisce il tasso di interesse composto annuo, Rm, partendo dal tasso di
interesse composto per m volte l'anno, Rm;
Rc e Rm sono entrambi espressi in termini di tassi di interesse annuali.
Queste altre due funzioni appena esplicitate si basano sull'equazione [2.2] nella quale il tasso di
interesse composto continuo (a scadenza n), Rc(n), viene comparato con l'equivalente tasso di
interesse composto per m volte l'anno (sempre a scadenza n), Rm(n).
mn
 Rm(n) 
[2.2]
e Rc ( n ) n  1 

m 

E' possibile semplificare entrambi i membri della [2.2] per n, ottenendo così:
m
Rm(n) 

Rc ( n )
[2.3]
e
 1 

m 

ovvero un'espressione nella quale possiamo esprimere il tasso Rc(n) come funzione del tasso Rm(n)
e viceversa.
La [2.2] e la [2.3] sono entrambe risolvibili, quindi, sia per Rc che per Rm.
Notiamo che l'equivalenza del tasso composto Rc con il tasso composto per m volte l'anno Rm, e
viceversa, sia del tutto indipendente rispetto alla scandenza n.
Un esempio ci aiuterà a comprendere al meglio l'utilizzo delle funzioni appena esplicitate.
Ipotizziamo un tasso di interesse composto continuo pari al 5% (annuo), per cui si ipotizzi Rc = 5%.
L'equivalente tasso di interesse composto per 2 volte l'anno (ovvero l'equivalente tasso di interesse
composto continuo semestrale) è pari a Rc2Rm (Rc; m) = Rc2Rm (0,05; 2) = 5,063% (tasso annuo).
Ribadiamo ancora una volta come l'equivalenza fra i due tassi, ovvero Rc e Rm non dipenda affatto
dalla scadenza n.
Deterministic Interest Rate Functions
Le Deterministic Interest Rate Functions sono funzioni che calcolano i tassi di interesse forward
35
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
partendo da una data struttura per scadenze dei tassi di interesse (o zero rate curve o yield curve).
Nelle definizioni che seguiranno, intenderemo sempre i tassi di interesse (siano essi spot – ovvero a
breve termine – che forward – ovvero a lungo termine) come composti e continui.
Fra le Deterministic Interest Rate Functions disponibili in Fairmat possiamo annoverare le seguenti:
•
Iforward (t; @zr): restituisce il tasso di interesse forward istantaneo al tempo t data la
struttura per scadenze dei tassi di interesse spot (o zero rate curve, zr);
Data una certa struttura per scadenze dei tassi di interesse spot, il tasso di interesse forward
istantaneo ad un dato istante t è dato dalla seguente:
zr (t  dt )(t  dt )  zr (t  dt )(t  dt )
[2.4]
2dt
•
F.R.A. (t; n; @zr): calcola il tasso di interesse forward di tipo semplice corrente al tempo t
per investimenti con scadenza n data una certa struttura per scadenze dei tassi di interesse
spot, zr. La funzione F.R.A. (acronimo di Forward Rate Agreement, ovvero Accordo sui tassi
di interesse futuri) restituisce un generico tasso LIBOR (London InterBank Offered Rate,
tasso interbancario “lettera” su Londra) quando t indica una data storica e la struttura per
scadenze zr è collegata al Market Data;
Data una certa struttura per scadenze dei tassi di interesse spot, definita dalla variabile zr dichiarata
nella funzione F.R.A., il tasso di interesse forward di tipo semplice corrente al tempo t con scadenza
n è definibile attraverso la seguente:
P (0, t+ n)
−1
P (0, t)
[2.5]
n
Dove P(0, t) indica il prezzo del titolo zero coupon con scadenza t.
I tassi della struttura per scadenze zr sono di tipo composto continuo per cui P(0, t) è definito come:
ezr(t)t.
Un esempio ci aiuterà a comprendere al meglio l'utilizzo della funzione F.R.A. appena illustrata.
Dati zr(0.5) = 0,0130870885 e zr(1.5) = 0,0156597434, il tasso forward semplice compreso tra il
tempo 0,5 e il tempo 1,5, ovvero in altre parole il tasso forward di tipo semplice corrente al tempo
0.5 per investimenti scadenti fra 1 periodo è pari a F.R.A (0.5; 1; @zr) = 0,0170904700.
(n è pari quindi a 1 e non a 1,5 in quanto del tasso forward corrente è a 1 periodo e non a 1,5
periodi).
Stochastic Interest Rate Functions
Fra le Stochastic Interest Rate Functions disponibili in Fairmat possiamo annoverare le seguenti:
36
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
BOND (t; s; @v): calcola, con riferimento all'istante t, il prezzo di un bond con scadenza
coincidente al tempo s, adottando come riferimento un determinato modello sui tassi di
interesse v (come può essere, ad esempio, il modello Hull e White);
•
Ad esempio, BOND (2; 3; @v1) permette di calcolare al tempo 2, il prezzo di un bond zero coupon,
con scadenza al tempo 3, adottando come riferimento il modello stocastico v1.
CMS (t; n; [m]; @v): calcola, con riferimento all'istante t, il valore del CMS (Costant
Maturity Swap) con scadenza al tempo n, adottando come riferimento un determinato
modello sui tassi di interesse v (come può essere, ad esempio, il modello Hull e White). Il
dato di input m indica l'intensità (ossia il numero di scambi finanziari previsti all'anno)
relativa al CMS stesso. Con riferimento a quest'ultimo dato, in particolare, per le swapotion
US, ovvero statunitensi, si deve utilizzare come dato di input m = 2 (il dato in questo caso
indica una frequenza di scambi semestrale nell'arco di un anno) mentre per le swapotion
europee, di tipo europeo, si deve utilizzare come dato di input m = 1 (il dato in questo caso
indica una frequenza di scambi annuale nell'arco di un anno);
•
Se il processo stocastico è collegato con i data sources, le informazioni riguardanti l'intensità m
sono ricavabili dai data sources stessi. Il valore all'istante t di un CMS con scadenza n e avente
intensità m (il quale indica, come già accennato, il numero di scambi finanziari nell'arco di un anno,
la frequenza degli scambi finanziari nell'arco di un anno), utilizzando come processo stocastico di
riferimento v, è definibile mediante la seguente:
1  BOND (t ; mn;V ref )
mn
[2.6]
1 / m BOND (t ; i / m;V ref )
i 1
dove il simbolo Vref equivale al simbolo @v.
Un esempio ci aiuterà a comprendere al meglio l'utilizzo della funzione CMS appena esplicitata. La
funzione CMS (4; 10; 2; @v1) permette di calcolare, all'istante 4, il CMS avente scadenza al tempo
10 e che prevede un'intensità pari a 2 (ovvero, in altre parole, una frequenza di scambi finanziari
semestrale nell'arco di un anno) utilizzando come processo stocastico di riferimento v1.
•
RATE (t; n; @v): calcola il tasso di interesse stocastico relativo all'intervallo temporale [t;
t+n] adottando come riferimento un determinato modello sui tassi di interesse v (come può
essere, ad esempio, il modello Hull e White);
In particolare il tasso di interesse relativo all'intervallo temporale che va dal tempo t alla scadenza n
si può calcolare, utilizzando come modello stocastico di riferimento v, attraverso la seguente:

 1 
1

 1 
[2.7]
ref
 BOND(t ; t  n;V )  n 
dove il simbolo Vref equivale al simbolo @v.
Un esempio ci aiuterà a comprendere al meglio l'utilizzo della funzione RATE appena esplicitata.
La funzione RATE (1; 0,5; @v1) permette di calcolare, all'istante 1, il tasso di interesse con
scadenza semestrale (0,5) utilizzando come processo stocastico di riferimento v1.
•
FIRS (t; n; m; Sk; @v): calcola con riferimento all'istante t, il valore dell'IRS (Interest Rate
37
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Swap) con scadenza coincidente al tempo n, avente intensità pari a m (il quale indica il
numero di scambi finanziari nell'arco di un anno) collegato al tasso cedolare Sk, utilizzando
come riferimento il processo stocastico sui tassi di interesse v. Solitamente Sk indica il tasso
forward swap, ovvero lo strike price della swapotion. Il dato di input m indica l'intensità
(ossia il numero di scambi finanziari previsti all'anno) relativa all'IRS stesso. Con
riferimento a quest'ultimo dato, in particolare, per le swapotion US, ovvero statunitensi, si
deve utilizzare come dato di input m = 2 (il dato in questo caso indica una frequenza di
scambi finanziari semestrale nell'arco di un anno) mentre per le swapotion europee, di tipo
europeo, si deve utilizzare come dato di input m = 1 (il dato in questo caso indica una
frequenza di scambi finanziari annuale nell'arco di un anno);
Il tasso forward swap con scadenza n, valutato all'istante t, data un'intensità finanziaria pari a m
(indicante il numero di scambi nell'arco di un anno, la frequenza degli scambi finanziari nell'arco di
un anno), dato il tasso cedolare di riferimento Sk, ed utilizzando come modello di riferimento sui
tassi di interesse il processo v, è determinabile attraverso la seguente:
Sk  mn

BOND (t , t  i / m)  BOND(t , t  n)  1
[2.8]


m  i 1

Interval Functions
Le Interval Functions sono funzioni che prendono come argomento un'espressione e poi eseguono
un calcolo, iterando l'espressione stessa entro il ciclo di iterazione definito dall'utente e quindi entro
l'intervallo di riferimento definito in input. Tutte queste funzioni ricevono quindi in input
un'espressione expr, un intervallo di riferimento, – definito attraverso un valore di partenza (start) e
un valore di terminazione (end) – nel quale l'espressione viene valutata, ed un parametro
(opzionale) di incremento (increment) il quale definisce il successivo incremento in ciascuna
iterazione, in ciascuna valutazione.
Utilizzando delle notazioni generali è possibile definire le Interval Functions nel modo seguente:
Interval_Functions (start; end; {expr}; [increment])
Notiamo che l'espressione expr è scritta entro delle parentesi graffe mentre il valore del parametro
increment, che è un parametro di tipo opzionale, viene scritto entro delle parentesi quadre.
Le Interval Functions sono molto simili alle Vector Functions, che abbiamo già visto e trattato in
uno dei precedenti paragrafi, con la differenza che nel caso delle Vector Functions la funzione di
valutazione è limitata soltanto ad una serie (discreta) di specifici valori definiti da un vettore (che
negli esempi riportati avevamo denominato sempre vec). Utilizzando le Interval Functions, invece,
possiamo impostare, attraverso la definizione del parametro increment, uno spazio di incremento
piuttosto fine in modo tale da rendere la valutazione assai simile ad una effettuata su uno spazio di
valori di tipo continuo, anziché di tipo discreto. Qualora omettessimo la specificazione relativa al
parametro increment, la funzione di step di riferimento diventa lo step della simulazione Monte
Carlo, definibile selezionando il percorso: Settings → Numerical Settings → # of discrete time
steps.
Le operazioni vengono iterate lungo tutto lo spazio di incremento compreso fra i valori definiti per
start e per end. Entro il range del contesto delle funzioni definite, vi sono poi alcuni internal symbol
che possono essere utilizzati:
– xs: indica il valore impostato per il parametro start (ovvero il valore di partenza);
38
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
– xe: indica il valore impostato per il parametro end (ovvero il valore di terminazione);
– xa: indica il valore della variabile indipendente al momento dell'iterazione corrente, attuale;
il simbolo a sta, infatti, per “actual” (attuale, corrente per l'appunto);
– xb: indica il valore della variabile indipendente alla precedente iterazione (ovvero
all'iterazione corrente meno il valore imputato per il parametro increment) richiamata
nell'iterazione corrente, attuale; il simbolo b sta, infatti, per “before” (prima);
Fra le Interval Functions attualmente disponibili in Fairmat si annoverano le seguenti:
•
•
•
•
•
•
•
IMax (start; end; {expr}; [increment]): restituisce il valore massimo dell'espressione expr
valutata nell'intervallo di valori compresi fra start e end campionato con un numero di step
(di passi di iterazione) pari a (end – start)/increment;
IMin (start; end; {expr}; [increment]): restituisce il valore minimo dell'espressione expr
valutata nell'intervallo di valori compresi fra start e end campionato con un numero di step
(di passi di iterazione) pari a (end – start)/increment;
ICount (start; end; {expr}; [increment]): restituisce il numero di volte per le quali il valore
dell'espressione expr, valutata nell'intervallo di valori compresi fra start e end campionato
con un numero di step (di passi di iterazione) pari a (end – start)/increment, è positivo;
IProd (start; end; {expr}; [increment]): restituisce il prodotto dei valori dell'espressione expr
valutata nell'intervallo di valori compresi fra start e end campionato con un numero di step
(di passi di iterazione) pari a (end – start)/increment;
ISum (start; end; {expr}; [increment]): restituisce la somma dei valori dell'espressione expr
valutata nell'intervallo di valori compresi fra start e end campionato con un numero di step
(di passi di iterazione) pari a (end – start)/increment;
IMean (start; end; {expr}; [increment]): restituisce la media aritmetica semplice (ovvero con
tutti i pesi pari a 1/N, quindi equiparati, tutti identici) dei valori dell'espressione expr
valutata nell'intervallo di valori compresi fra start e end campionato con un numero di step
(di passi di iterazione) pari a (end – start)/increment;
ICondMean (start; end; {conditionexpr}; {expr}; [increment]): come la funzione precedente
(IMean) restituisce la media aritmetica dei valori dell'espressione expr, valutata
nell'intervallo di valori compresi fra start e end campionato con un numero di step (di passi
di iterazione) pari a (end – start)/increment. Diversamente però dalla funzione IMean,
precedentemente illustrata, ICondMean calcola la media (aritmetica semplice) dei valori
dell'espressione expr solo in quei passi temporali nei quali la veridicità della condizione sia
verificato (ovvero solo per quei valori dell'intervallo [start; end] campionato con un numero
di passi di iterazione pari a (end – start)/increment), per i quali il valore dell'espressione
expr, per esempio, è maggiore di zero. In altre parole, ICondMean calcola la media
aritmetica solo di quei valori dell'espressione expr che verificano una determinata
condizione, quale può essere, ad esempio, la condizione per cui expr > 0;
Come abbiamo già accennato in più occasioni, il parametro increment identifica lo spazio di
incremento. Se l'intervallo [start; end] è uguale a 1 (per cui il valore del parametro si riferisce ad un
periodo di tempo di un anno) e se dobbiamo effettuare un campionamento giornaliero dell'intervallo
temporale (daily) allora dovremo impostare il parametro increment uguale a 1/365 = 0,002739726,
ovvero sia una frequenza di iterazione pari a 365.
Increment è un parametro opzionale il cui valore di default è pari a dt, ovvero l'orizzonte temporale
di simulazione di riferimento meno la Simulation Start Date diviso per il valore corrispondente al
39
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
parametro # of discrete time steps (ovvero, diviso per il numero di passi temporali di tipo discreto).
•
Integral (start; end; {expr}): calcola l'integrale dell'espressione expr valutata nell'intervallo
di valori compresi fra start e end. Più nel dettaglio, l'integrale viene calcolato
numericamente, eseguito da un punto di vista numerico, con la regola del trapezoide;
Alcuni esempi ci aiuteranno a comprendere al meglio il funzionamento e l'utilizzo delle Interval
Functions appena illustrate.
Primo esempio
Calcolo della media di una funzione entro un range, un intervallo, prestabilito e con un numero
prestabilito di incrementi.
Ipotizziamo di voler calcolare la media di una funzione (come può essere ad esempio y = exp(x))
entro un range, un intervallo, prestabilito (ad esempio [1; 3]) e con un numero prestabilito di
incrementi (ad esempio 4). Per tale scopo si può utilizzare la funzione IMean (start; end; {expr};
[increment]) = 0,5 (ciò in quanto sono richiesti 4 incrementi entro l'intervallo di riferimento [1; 3],
per cui increment assumerà un valore pari a (end – start)/# of increment = (3 – 1)/4 = 0,5.
Di conseguenza IMean (1; 3; {expr = exp(xa)}; 0,5) restituirà un valore pari a 9,37 ed equivarrà a
scrivere la seguente espressione: [exp(1) + exp(1 + (1*0,5)) + exp(1 + (2*0,5)) + exp(1 + (3*0,5))
+ exp(1+(4*0,5)) = (2,71828 + 4,48169 + 7,38906 + 12,18249 + 20,08554)/5 = 46,857/5 = 9,37.
Secondo esempio
Massimo incremento in un dato intervallo.
Su una data realizzazione, la seguente formula restituisce il massimo incremento dei rialzi delle
attività sottostanti al modello V1 osservati fra il periodo 4 e il periodo 6.
IMax (4; 6; {V1[xa]/V1[xb]})
Selection Functions
Le Selection Functions sono un tipo di funzioni molto più articolate di quelle che abbiamo visto
finora in quanto si tratta di un tipo di funzioni che lavorano sia con gli asset set (o insiemi di
attività) che con i vettori, attraverso delle espressioni di selezione.
Fra le Selection Functions disponibili in Fairmat possiamo annoverare le seguenti:
•
ASSel (asset_set; vec; sel_expr; val_expr; mode): lavora su un asset set definito dal
parametro asset_set e, per ogni data contenuta nel vettore vec, viene valutata, per ciascun
elemento appartenente all'asset_set, l'espressione di selezione sel_expr;
Dall'asset set di riferimento vengono rimossi i valori della funzione corrispondenti al massimo e al
minimo per cui alla data corrente (attuale), l'espressione di selezione sel_expr verrà valutata sul
restante asset set. In particolare, se il valore impostato per il parametro mode è pari a 1 allora, ad
ogni iterazione, verrà rimosso l'elemento dell'asset set che massimizza il valore dell'espressione di
selezione sel_expr (ovvero il suo valore massimo); diversamente se il valore impostato per il
parametro mode è pari a 0 allora, ad ogni iterazione, verrà rimosso l'elemento dell'asset set che
minimizza il valore dell'espressione di selezione sel_expr (ovvero il suo valore minimo).
Infine, se l'asset set comprende K elementi, per le selezioni verranno considerati solo i primi K – 1
40
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
elementi del Vector Date.
•
ASSelAvg (asset_set; vec; sel_expr; mode): lavora su un asset set definito dal parametro
asset_set e, per ogni data contenuta nel vettore vec, viene valutata, per ciascun elemento
appartenente all'asset_set, l'espressione di selezione sel_expr;
Dall'asset set di riferimento vengono rimossi i valori della funzione corrispondenti al massimo e al
minimo per cui la funzione restituirà la media (aritmetica semplice) dell'espressione di selezione
sel_expr valutata sui rimanenti elementi dell'asset set di riferimento. In particolare, se il valore
impostato per il parametro mode è pari a 1 allora, ad ogni iterazione, verrà rimosso l'elemento
dell'asset set che massimizza il valore dell'espressione di selezione sel_expr (ovvero il suo valore
massimo); diversamente se il valore impostato per il parametro mode è pari a 0 allora, ad ogni
iterazione, verrà rimosso l'elemento dell'asset set che minimizza il valore dell'espressione di
selezione sel_expr (ovvero il suo valore minimo).
Se l'asset set comprende K elementi, per le selezioni verranno considerati solo i primi K elementi
del Vector Date, per cui il vettore stesso dovrà contenere almeno K date.
Standard Functions
Le funzioni standard di tipo analitico e gli operatori di espressioni disponibili in Fairmat sono
riassunti nella tabella 2.2 in parte sottoriportata e in parte riportata alla pagina successiva:
(Tabella 2.2 – Elenco Standard Functions)
Simbolo
( )
%
^
*
/
MOD
+
>
<
==
>=
Alias
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
Descrizione
Priorità all'interno di un'espressione
Percentuale
Elevazione a potenza
Moltiplicazione
Divisione
Funzione modulo (resto della divisione intera)
Addizione
Sottrazione
Maggiore di
Minore di
Uguaglianza
Maggiore-uguale di
41
Esempio
5*(1+1) = 10
35% = 0.35
4^5 = 1024
3*6 = 18
9/2 = 4.5
Mod(7; 4) = 3
1+1 = 2
9-5 = 4
9>5 = 1 (VERO)
7<4 = 0 (FALSO)
5==4 = 0 (FALSO)
3>=3 = 1 (VERO)
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
(Tabella 2.2 – Elenco Standard Functions)
Simbolo
<=
<>
NOT
AND
OR
IIF/SIIF
MIN
MAX
SIN
Alias
Nessuno
Nessuno
Nessuno
&
||
Nessuno
Nessuno
Nessuno
Nessuno
COS
Nessuno
TAN
Nessuno
ASIN
ACOS
ATAN
Nessuno
Nessuno
Nessuno
SEC
Nessuno
CSC
Nessuno
COT
Nessuno
SINH
COSH
TANH
ABS
EXP
LOG
LOG2
Nessuno
Nessuno
Nessuno
Nessuno
Nessuno
LN
Nessuno
Descrizione
Esempio
13<=9 = 0 (FALSO)
Minore-uguale di
Disuguaglianza
23<>20 = 1 (VERO)
NOT(15) = -16
Negazione
Operatore bitwise E (Prodotto Logico)
6 AND 5 = 4
Operatore bitwise O (Somma Logica)
13 OR 6 = 15
IIF(2<4; 4; 5)
Se, costrutto di selezione
Valore Minimo
MIN(10; 3; 27; 13) = 3
Valore Massimo
MAX(1; 9) = 9
Funzione Seno dell'argomento, espresso in radianti SIN(pi) = 0
Funzione Coseno dell'argomento, espresso in
COS(pi) = -1
radianti
Funzione Tangente dell'argomento, espresso in
TAN(pi) = 0
radianti
Funzione inversa della funzione Seno (SIN)
ASIN(1) = 1,570
ACOS(-1) = 3,1416
Funzione inversa della funzione Coseno (COS)
Funzione inversa della funzione Tangente (TAN) ATAN(0) = 0
Funzione Secante dell'argomento, espresso in
SEC(0) = 1
radianti
Funzione Cosecante dell'argomento, espresso in
CSC(1) = 1,18
radianti
Funzione Cotangente dell'argomento, espresso in
COT(1) = 0,642
radianti
Funzione Seno Iperbolico
SINH(3) = 10,01
Funzione Coseno Iperbolico
COSH(2) = 3,76
Funzione Tangente Iperbolica
TANH(1) = 0,76
Funzione Valore Assoluto
ABS(-8) = 8
EXP(3) = 20,08
e elevato a potenza
Funzione Logaritmo Naturale
LOG(16) = 2,77
Funzione Logaritmo in base 2
LOG2(8) = 3
La funzione SIGN (Segno) può restituire o il valore -1, o il valore 0 o il valore 1.
Il valore restituito dall'operatore T2I è espresso in unità di frazioni d'anno.
Gli operatori relazionali (quali >, <, <=, >=, = =, < >) possono restituire come risultato solo due
valori: o 1 o 0 (ossia, rispettivamente, o TRUE – Vero – o FALSE – Falso).
42
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
La funzione IIF e la funzione SIIF
La funzione IIF è una funzione definita come segue:
IIF (condition; true_expression; false_expression).
In particolare, se la condizione (condition) è vera allora viene restituito il valore della
true_expression; altrimenti viene restituito il valore della false_expression.
La funzione IIF ha due differenti versioni; in altre parole può essere scritta in due modi diversi:
• IIF (condition; expression1; expression2) oppure
• IIF (condition; {expression1}; {expression2});
La principale differenza fra questi due differenti versioni consiste nel fatto che nella prima versione
expression1 e expression2 vengono valutate prima della chiamata di funzione, mentre nella seconda
versione, in base al valore della condition, viene valutata o solo la expression1 o solo la
expression2. Quest'ultima versione risulta essere molto utile quando una delle espressioni
(expression1 o expression2) contrasta con la condition. In questo caso solo una delle due espressioni
indicate verrà valutata una volta verificata la condition.
La funzione SIIF (ovvero una funzione sequenza di IIF) è definita, invece, come segue:
SIIF (condition#1; true_expression1; condition#2; true_expression2; false_expression).
Other Functions
All'interno della macrocategoria delle Other Functions possiamo distinguere due sottocategorie di
funzioni: 1) le Derivatives e 2) le Option Map Block Related Functions.
Derivatives
Fairmat permette di calcolare le derivate arrivando fino alla derivata seconda, sia di funzioni
predefinite nel programma sia di funzioni definite dall'utente. Fra le Derivatives disponibili in
Fairmat si possono, in particolare, annoverare le seguenti:
• Partial (@f; x1): calcola la derivata prima parziale, rispetto a x1, della funzione
monodimensionale f;
• Partial (@f; x1; x2; component): calcola la derivata prima parziale (sul componente
component = comp), rispetto sia a x1 che a x2, della funzione bidimensionale f;
• Partial (@f; x1 ; x2; x3; component): calcola la derivata prima parziale (sul componente
component = comp), rispetto a x1 , x2, e x3, della funzione tridimensionale f;
• Partial2 (@f; x1): calcola la derivata seconda parziale, rispetto a x1, della funzione
monodimensionale f;
• Partial2 (@f; x1; x2; component): calcola la derivata seconda parziale (sul componente
component = comp), rispetto sia a x1 che a x2, della funzione bidimensionale f;
• Partial2 (@f; x1 ; x2; x3; component): calcola la derivata seconda parziale (sul componente
component = comp), rispetto a x1 , x2, e x3, della funzione tridimensionale f;
Option Map Block Related Functions
43
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Le Option Map Block Related Functions sono le funzioni relative al blocco, o ai blocchi,
dell'ambiente Option Map.
In alcune situazioni l'utilizzo dei blocchi composti non è sufficiente a descrivere alcune relazioni
che occorrono fra le differenti parti contrattuali (i cosiddetti Legs dell'ambiente Option Map). Una
simile situazione può, infatti, accadere quando da una data struttura decisionale (o da un dato albero
decisionale) vogliamo utilizzare, sfruttare, solo il valore di un'altra differente sottostruttura, oppure
quando il valore di un dato blocco deve essere scomposto in sottoblocchi, come avviene nel caso
della modellazione del rischio di controparte.
Fra le Option Map Block Related Functions disponibili in Fairmat si possono, in particolare,
annoverare le seguenti:
• Value (@option; date): calcola il valore d una data opzione (option) ad una determinata data
(date);
• Value (@option; infoDate payoffDate): calcola il valore atteso condizionale (con riferimento
alle informazioni disponibili in infoDate) dei flussi di cassa attualizzati (scontati) del blocco
denominato @option;
Il valore del node viene calcolato come un'aspettativa condizionale qualora la data indicata (date)
sia successiva alla data corrente del node medesimo; altrimenti, qualora la data sia antecedente alla
data corrente del node medesimo, esso viene calcolato come un valore di realizzo.
La funzione Value (@option; infoDate; payoffDate) può essere utilizzata nei seguenti casi:
– quando, in un dato node della Option Map, è necessario conoscere il valore condizionale di
nodes appartenenti a differenti sottostrutture;
– quando è necessario conoscere il valore condizionale (o il valore storico) dei nodes con
riferimento a date diverse rispetto a quella attuale;
•
Valuewd (@option; infoDate; defDate; recovery; versus): calcola il il valore dei futuri
pagamenti modellati nel blocco @option, i quali sono condizionati da un (probabile) default
che si verificherà (presumibilmente) alla data defDate e scontati in base alle informazioni
disponibili in infoDate – Valuewd è l'abbreviativo di Value With Default;
Il valore del node viene calcolato come un'aspettativa condizionale qualora la defDate (data
presumibile del probabile default) sia successiva alla data corrente del node medesimo; altrimenti,
qualora la data sia antecedente alla data corrente del node medesimo, esso viene calcolato come un
valore di realizzo.
Solitamente definita la defDate, qualora il valore attualizzato (scontato) dei futuri pagamenti
provenienti da un'entità dichiarata in stato di default sia positivo, la controparte non in default
riceverà solo il 40% del valore futuro dei pagamenti (in altri termini si applica alla somma dei futuri
pagamenti un recovery rate, un tasso di recupero in caso di dichiarazione di default del 40%). Nel
caso contrario, si dovrà considerare l'intero valore, dato dai futuri flussi di cassa attesi.
Espliciteremo ora alcuni dettagli sugli argomenti della funzione Valuewd:
1) @option: indica la sottostruttura oggetto del valore da calcolare;
2) infoDate: indica la data di valutazione;
3) defDate: indica la data nella quale, si presume, occorra il default e a partire dalla quale dovrà
essere presa in considerazione solo una parte dei flussi di cassa attesi;
4) recovery: indica il tasso di recupero o recovery rate; generalmente esso è pari al 40%;
5) versus; parametro che si deve impostare o pari a +1 o pari a -1;
44
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
Attraverso la funzione Valuewd possiamo scrivere in modo composto la seguente espressione (del
tutto equivalente):
iif(versus*value (@option; id; defDate) > 0); {x1 – (1 – RecoveryRate)*value (@option; id;
defDate)}; {value (@option; id; defDate)}).
Reserved Symbols
Fairmat definisce una serie di simboli i quali sono specifici alla modellazione del progetto e hanno
un comportamento specifico. Per cui non possiamo creare simboli di uso comune (i cosiddetti
custom symbols) con un nome speciale in quanto essi sono già definiti nel programma.
Di seguito proponiamo una lista di tutti i Reserved Symbols (detti anche Private Symbols in quanto,
appunto, riservati) utilizzati in Fairmat con l'illustrazione delle caratteristiche di ciascuno di essi:
• Effective Date (Data inizio contratto): rappresenta la data nella quale il contratto ha inizio,
ha effetto (e che può essere differente dalla data di valutazione, o Valuation Date). Il valore
della variabile può essere impostato nelle Project Preferences.
Tale variabile può essere utilizzata in qualsiasi espressione;
• X: indica il valore della specifica attività sottostante in ciascun stato. Tale variabile può
essere utilizzata nella finestra di dialogo di specificazione dell'attività sottostante qualora si
voglia, ad esempio, definire un'attività che ha una certa correlazione con lo stato di un'altra
attività;
• t: indica la data attuale, il tempo relativo all'istante di partenza del progetto. Tale variabile
viene espressa in unità di tempo e può essere usata in ogni espressione dei payoff, in ogni
specificazione dell'attività e in ogni funzione analitica;
• i: rappresenta l'indice riferito alla data attuale, il tempo relativo all'istante di partenza del
progetto. Tale variabile viene utilizzata nella definizione delle funzioni ricorrenti;
• xa: si tratta di una variabile utilizzabile sia nelle Interval Functions che nelle Vector
Functions. In particolare nelle Interval Functions tale variabile indica il valore dell'attuale
ciclo di iterazione (“a”, sta, infatti per “actual”, ovvero corrente, attuale); nelle Vector
Functions tale variabile indica il valore dell'elemento corrente, attuale, del vettore;
• xb: anche in questo caso, si tratta di una variabile utilizzabile sia nelle Interval Functions che
nelle Vector Functions. In particolare nelle Interval Functions tale variabile indica il valore
del tempo che era stato il tempo corrente nel passaggio precedente, nel ciclo di iterazione
precedente (“b” sta, infatti, per “before”); nelle Vector Functions tale variabile indica il
valore dell'elemento che era stato l'elemento corrente, attuale, nella precedente iterazione
della funzione;
• xs: anche tale variabile è una variabile utilizzabile sia nelle Interval Functions che nelle
Vector Functions. In particolare, tale variabile indica il valore di partenza t0;
• Scenario: tale variabile rappresenta l'indice dello scenario attuale, corrente. Essa può essere
modificata manualmente dall'utente oppure automaticamente nella Scenario Analysis, che
vedremo poi più in dettaglio nel corso del Capitolo 4. Tale variabile può essere utilizzata in
qualunque espressione;
• Horizon (orizzonte): tale variabile rappresenta la distanza temporale (espressa in frazioni
d'anno) coperta dall'opzione con scadenza a più lungo termine; in altre parole, essa
rappresenta l'orizzonte temporale della simulazione. Tale variabile può essere utilizzata in
qualunque espressione;
45
CAPITOLO 2 – IL LINGUAGGIO ALGEBRICO DI FAIRMAT
•
•
Global Calendar: tale variabile rappresenta il calendario di mercato sul quale si basano tutti
i vettori e tutte le funzionalità di trasformazione delle date Date Vector Adjustment and
Differences Calculator.
Tale variabile si imposta selezionando il seguente percorso: Settings → Project Preferences
e può essere utilizzata nelle project dates metrics e nelle funzionalità di trasformazione delle
date Date Vector Transformation – ovvero nelle funzionalità Date Vector Adjustment and
Differences Calculator;
Random Variables Generator
Fairmat può generare campionamenti casuali da variabili casuali indipendenti. Il campionamento
casuale può essere utilizzato nei payoff, nella definizione di funzioni analitiche e nella definizione
di processi stocastici.
Le Random Variables Generator disponibili in Fairmat sono le seguenti:
• Uniform (a; b): la quale restituisce un numero reale pseudo-casuale preso da una
distribuzione uniforme definita nell'intervallo di valori [a; b];
• Negative Exponential (a): la quale permette di rappresentare la distribuzione esponenziale
negativa con media, valore atteso, pari ad a;
• Logistic (a; b): la quale restituisce un numero reale pseudo-casuale preso da una
distribuzione logistica con media, valore atteso, pari ad a e spread pari a b;
• Normal (a; b): la quale restituisce un numero reale pseudo-casuale preso da una
distribuzione gaussiana (o normale) con media, valore atteso, pari ad a e deviazione
standard pari a b;
• Cauchy (a; b): la quale restituisce un numero reale pseudo-casuale preso da una
distribuzione con mediana pari ad a ed un semi-intervallo interquartile pari a b;
• Student (n): la quale restituisce un numero reale pseudo-casuale preso da una distribuzione t
di Student con n gradi di libertà (n deve essere, in particolare, un numero intero);
• Fisher (m; n): la quale restituisce un numero reale pseudo-casuale preso dalla distribuzione
di Fisher – Snedecor con m e n gradi di libertà (m e n devono essere, in particolare, numeri
interi);
• Weibull (a; b): la quale restituisce un numero reale pseudo-casuale preso dalla distribuzione
di Weibull a due parametri e, più precisamente con un parametro forma pari ad a ed un
parametro scalare pari a b;
• Poisson (I): la quale restituisce una variabile intera pseudo-casuale presa da una
distribuzione di Poisson con media, valore atteso, pari a I;
• Logicall (p): la quale restituisce un valore logico pseudo-casuale TRUE (ossia “Vero”, o 1)
con probabilità pari a (p) e FALSE (ossia “Falso”, o 0) con probabilità pari a (1 – p);
46
CAPITOLO 3
IL WORK SPACE
DI FAIRMAT
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Nel Capitolo 1 abbiamo visto che la pagina iniziale dell'applicativo Fairmat si presenta così (figura
3.1):
(Figura 3.1: Schermata inziale – 2)
Cercheremo ora di focalizzare l'attenzione sui due tab principali che si trovano alla sinistra della
schermata iniziale di Fairmat ovvero i tab Structure e Info.
Il tab Structure comprende, a sua volta, una serie di ambienti (figura 3.2), che vedremo
dettagliatamente uno per uno nel corso di questo capitolo e che sono i seguenti:
1) L'ambiente Parameters & Functions nel quale possiamo inserire input generali (quali, ad
esempio, le costanti, i vettori e le matrici), aggiungere funzioni analitiche o funzioni
ricorrenti o aggiungere una funzione di trasformazione di un determinato dato di input
(quale, ad esempio, una data di pagamento);
2) L'ambiente Stochastic Processes nel quale possiamo inserire un processo stocastico di base
oppure un processo stocastico disponibile dopo aver effettuato un plug-in;
3) L'ambiente Discounting nel quale possiamo impostare i parametri base per l'attualizzazione
(o discounting, appunto) globale del progetto che si sta analizzando ed esaminando;
4) L'ambiente Option Map nel quale possiamo modellare, da un punto di vista grafico,
attraverso un apposito costruttore grafico posto su di una tavolozza, su di un pannello, il
contratto derivato oggetto di analisi, creando una sorta di asse dei tempi delle varie scadenze
da esso previste e al tempo stesso una sorta di struttura logica e decisionale il cui percorso
varia in base al susseguirsi delle varie scadenze contrattuali e al manifestarsi dei vari
pagamenti previsti fra le parti contrattuali coinvolte;
5) L'ambiente Manage Scenarios nel quale possiamo creare diversi scenari (o configurazioni)
per il progetto che si sta analizzando ed esaminando;
47
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.2: Tab Structure e relativi ambienti)
L'ambiente Parameters & Functions
Il tab Parameters & Functions (figura 3.3) ci porta ad un ambiente che ci consentire di creare e/o
modificare oggetti come ad esempio le costanti, i vettori, le matrici e via discorrendo.
Nel dettaglio Fairmat, attraverso l'ambiente Parameters & Functions, possiamo inserire:
1) Parameters (ossia Parametri) quali:
- Scalar (scalari o, più semplicemente, costanti);
- Vector (vettori);
- Matrix (matrici);
- Endogenous Variable (variabili endogene);
- Vector of Ticker (vettori di ticker);
- Vector and Matrices Aggregator (vettori e matrici aggregatori);
- Vector of weights (vettore dei pesi);
- Date Sequences (sequenze di date);
2) Functions (ossia Funzioni) quali:
- Analytic Function (funzioni analitiche);
- Interpolated Function (funzioni interpolanti);
- Recurrence Function – time steps (funzioni ricorrenti – fasi temporali);
- Recurrence Function – array (vettori di funzioni ricorrenti);
- 2D Interpolated Function (funzioni interpolanti bidimensionali);
3) Transformations (ossia Trasformazioni) quali:
- Date Vector Adjustment;
- Date Vector Differences Calculator;
- Zero Rate Curve Calculator;
48
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.3: Ambiente Parameters & Functions)
Parameters: Scalar
Uno Scalar (o scalare o, più semplicemente, costante) – figura 3.4 – è un elemento che può essere
passato come argomento di una funzione o essere utilizzato nelle espressioni Fairmat per definire i
payoff del contratto derivato oggetto di analisi e ogni qual volta sia necessario specificare un valore
costante (come ad esempio il valore nozionale di un contratto).
Uno Scalar può essere un numero così come un'espressione algebrica oppure ancora una data.
Come altri oggetti creati su Fairmat, le costanti possono essere taggate per essere incluse in una
Sensitivity Analysis oppure in una Impact Analysis, oppure, semplicemente, possono essere rese
pubbliche.
Un suggerimento: se con il cursore del mouse passiamo sopra l'espressione appena creata per lo
Scalar, Fairmat mostrerà il significato numerico dell'espressione stessa (ad esempio uno Scalar
definito come una data e corrispondente, per ipotesi, alla data del 30/06/2004, in relazione ad una
Valuation Date fissata, per ipotesi, in corrispondenza della data del 30/12/2003, corrisponde, in
termini numerici, alla cifra 0,500014971180478 qualora siano state impostate le impostazioni di
default Actual/Actual per il campo “Counter” e Unadjusted per il campo “Convention”).
Vediamo come inserire uno Scalar nell'ambiente Parameters & Functions di Fairmat (figura 3.5) e
come editarlo. Nel tab Definition dovremo compilare i campi “Name”, inserendovi il nome che
vogliamo attribuire allo scalar che stiamo andando a creare, e “Expression”, nel quale inseriremo il
suo valore (se stiamo inserendo una costante) oppure l'espressione ad esso relativa (se stiamo
inserendo una data o, appunto, un'espressione).
49
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.4: Ambiente Parameters & Functions – Scalar)
(Figura 3.5: Finestra di editing di uno Scalar)
Parameters: Vectors and Matrices
Fra gli oggetti disponibili in Fairmat possiamo anche inserire vettori e matrici selezionando,
nell'ambiente Parameters & Functions, il tab Parameters e poi l'oggetto Vector (o Matrix, a
seconda che dobbiamo costruire o un vettore oppure una matrice).
Gli editor degli oggetti Vector e Matrix (tab Data) ci permettono di inserire i dati:
– o direttamente dalla tastiera;
– o copiando una selezione di dati da un foglio di calcolo elettronico (come ad esempio un
foglio di Excel), premendo il tasto “Import” e dopo aver dato comando “Import” (figure 3.6
e 3.7);
– o copiando una selezione di dati da un foglio di calcolo elettronico (come ad esempio un
foglio di Excel) ed incollando direttamente la selezione stessa nel campo “Expression”;
50
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.6: Vectors and Matrices, finestra di editing 1)
La dimensione del vettore creato (o della matrice creata) è indicata in basso a sinistra nella finestra
di editing dell'oggetto (figura 3.8).
Nel caso di fonti di dati separate attraverso il tabulatore, l'utente deve, prima ancora di inserire tali
dati in una matrice, flaggare il check-box “Use also space as column separator”.
Una volta che il vettore è stato creato (o che la matrice è stata creata) possiamo aggiungere un
singolo elemento (una linea nel caso in cui si tratti di una matrice), prima o dopo un elemento di
riferimento, semplicemente puntando con il mouse la testata della griglia di visualizzazione e
cliccando il tasto destro (figura 3.9).
(Figura 3.7: Vectors and Matrices, finestra di editing 2)
51
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.8: Vectors and Matrices, dimensione)
(Figura 3.9: Vectors and Matrices, aggiunta/rimozione elementi)
52
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Parameters: Date Sequences
Attraverso l'oggetto Date Sequences (figura 3.10) abbiamo la possibilità di generare in automatico
una sequenza di “payment dates” (ovvero di date di pagamento) mediante la specifica della data di
inizio periodo, la data di fine periodo e la frequenza dei pagamenti. Le date così generate in
automatico potranno poi essere modificate manualmente e trasformate con degli aggiustamenti.
Lo scopo di questo oggetto è quello di semplificare la creazione di un Vector Dates evitando la
necessità di compiere il passaggio di importarle da un software esterno o da un foglio di calcolo
elettronico.
Per attivare il generatore automatico di date dobbiamo entrare nell'ambiente Parameters &
Functions, cliccare sul comando “Add”, selezionare l'oggetto Date Sequences e cliccare poi su
“OK”. A questo punto possiamo impostare una data di partenza ed una data di fine periodo
specificando anche l'intervallo temporale che deve intercorrere tra una data di scadenza e l'altra. Le
scelte possibili in tal senso sono, in particolare: “Daily” (ovvero giornalmente, ogni giorno);
“Weekly” (ovvero settimanalmente, ogni settimana); “Bi-Weekly” (ovvero bisettimanalmente, ogni
due settimane); “Monthly” (ovvero mensilmente, ogni mese); “Theree Months” (ovvero
trimestralmente, ogni tre mesi); “Six Months” (ovvero semestralmente, ogni sei mesi); “Year”
(ovvero annualmente, ogni anno);
Con le date specificate e con la frequenza temporale così impostata, Fairmat in automatico genererà
un Vector Dates contenente una serie di date sulla base di quanto da noi impostato e richiesto.
(Figura 3.10: Date Sequences, tab Definition)
53
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Functions: Analytic Functions
L'oggetto Analytic Functions, presente all'interno dell'ambiente Parameters & Functions, ci
permette di definire delle funzioni per un loro successivo utilizzo in Fairmat. L'obiettivo è di
semplificare la scrittura di espressioni algebriche inserendo nelle funzioni espressioni che siamo
soliti utilizzare varie volte.
L'oggetto Analytic Functions (figure 3.11 e 3.12) viene definito in base a come compiliamo i campi
del tab Expression durante la fase di Editing e quindi in base a come compiliamo i seguenti campi:
– “Function Name” (nome della funzione): nel quale, appunto attribuiamo alla funzione che si
sta creando un nome; nello specifico, il nome deve essere univoco e non può contenere
spazi;
– “# of Independent Variables” (numero di variabili indipendenti): con il quale si imposta il
numero di variabili che verranno considerate dalla funzione analitica. E' possibile inserire
fino ad un massimo di 16 variabili indipendenti;
– “Expression f(x1, …, xN)” (ovvero l'espressione analitica della formula): l'espressione può
riferirsi, in particolare, sia alle variabili indipendenti (x1, …, xN) che ad un qualunque altro
simbolo definito in Fairmat, come ad esempio una costante (sia essa definita dall'utente che
predefinita dal sistema);
(Figura 3.11: Analytic Function, Tab Expression)
54
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.12: Analytic Function, un esempio)
Functions: Interpolated Functions
Data una serie di coordinate (Xi, Yi), le quali sono costituite da coppie di numeri reali, attraverso
l'oggetto Interpolated Functions possiamo procedere alla stima di un modello matematico, una
funzione interpolante, in grado di descrivere i punti dati. Il valore della funzione interpolante è
l'output del modello.
In particolare, a tal fine in Fairmat possiamo utilizzare vari modelli per l'interpolazione fra i quali
(figura 3.13):
– Linear Interpolation (Interpolazione Lineare): dati due punti, il valore di Y corrispondente a
X può essere trovato attraverso un'interpolazione di tipo lineare. Se i due punti noti sono dati
dalle coordinate (X0, Y0) e (X1, Y1), l'interpolazione lineare individua la linea retta che passa
tra questi punti. Per un valore di X nell'intervallo [X0, X1], il valore di Y lungo la linea retta
sarà dato dalla seguente equazione:
Y  Y0
X  X0

Y1  Y0 X 1  X 0
[3.1]
risolvendo la [2.1] per Y, che è il valore dell'incognita, rispetto a X, si ottiene:
Y  Y0  ( X  X 0 ) 
Y1  Y0
X1  X 0
[3.2]
che è la formula per l'interpolazione lineare nell'intervallo (X0, X1);
– Cubic Spline: l'interpolazione spline è una forma di interpolazione nella quale la funzione
interpolante è un tipo speciale della funzione polinomiale a tratti chiamata appunto spline.
Per una serie di dati {Xi} di N+1 punti, è possibile costruire una cubic spline con un
polinomiale cubico a tratti fra i punti dati. Per una coppia di punti adiacenti viene calcolato
un polinomio di 3° grado. Date due coppie di punti adiacenti, il polinomio viene calcolato in
modo tale che si possa avere la stessa derivata in un punto comune (la funzione spline è,
infatti, una funzione monotona);
55
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
– Polynomial Interpolation – Least Square (Interpolazione polinomiale – Minimi Quadrati): la
“polynomial interpolation” è l'interpolazione di una data serie di polinomi. Più
precisamente, dati alcuni punti, l'obiettivo è quello di individuare un polinomio che passi
esattamente per i punti dati. Il modello stima un polinomio di uno specifico grado che
minimizza l'errore fra il polinomio e la serie di dati;
– Interpolation of a Zero (Steps Functions): dati due punt adiacenti con coordinate ad esempio
(X0, Y0) e (X1, Y1), il valore della funzione nell'intervallo [X0, X1] è Y0. Per X ≥ X1 è Y1;
(Figura 3.13: Interpolated Function, metodi di interpolazione e di estrapolazione)
Nella finestra di editing di una Interpolated Function è anche possibile selezionare il metodo di
estrapolazione dei dati (figura 3.13). In tal senso le scelte possibili sono le seguenti:
– Extrapolated using the selected interpolation model (estrapolare utilizzando il modello di
interpolazione selezionato) per cui l'estrapolazione sarà coerente con il modello di
interpolazione scelto;
– Extrapolated using a costant model (estrapolare utilizzando un modello costante) per cui
l'estrapolazione sarà costante e verrà calcolata utilizzando l'algoritmo immediatamente più
vicino, più simile;
56
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Functions: Recurrence Functions
In molte situazioni, specialmente per descrivere eventi che si ripetono ad intervalli di tempo discreti
e la cui evoluzione dipende dai dati previsionali, è naturale considerare le sequenze definite come
ricorsive. Generalmente viene assegnato un dato iniziale, dopo di ché si imposta la regola in base
alla quale si determinerà ciascun nuovo dato, come ad esempio avviene nel caso di una funzione
previsionale.
Vediamo ora un breve esempio di funzione ricorrente, in modo da comprenderne appieno il
concetto. Ipotizziamo il caso più semplice, ovvero quello di dipendenza dai soli dati previsionali,
ovvero la seguente situazione:
αt+1 = f(at)
per t=1, 2, …, n-1 e a1=α
dove f(...) indica la funzione che descrive come il nuovo passo debba essere calcolato a partire
dall'elemento precedente; α indica, invece, il dato iniziale, di partenza.
Le funzioni ricorrenti, presenti e disponibili in Fairmat, vengono prima inserite dall'utente
nell'ambiente Parameters & Functions e poi vengono richiamate nell'ambiente Option Map come
semplici vettori.
Le funzioni ricorrenti possono essere un'espressione nella quale appaiono sia la stessa funzione
ricorrente sia le sue variabili sottostanti, sia, infine, gli altri parametri.
Una funzione ricorrente può anche essere, a sua volta, una funzione di altre funzioni ricorrenti. In
quest'ultimo caso particolare, se la funzione ricorrente, di nome ad esempio B, dipende da un'altra
funzione ricorrente, di nome ad esempio A, dovremo rispettare la definizione dell'ordine di priorità.
Fairmat fornisce due tipi di funzioni ricorrenti, definite da un valore iniziale e da una regola di
ricorrenza, la quale permette di definirne l'evoluzione temporale:
– Function defined by a recurrence expression – time steps (funzione definita da
un'espressione ricorrente – passi temporali) per cui ad ogni tempo t, la funzione dipende dal
suo valore riferito ai periodi precedenti t – dt;
– Function defined by a recurrence expression – array (funzione definita da un'espressione
ricorrente – vettore) per cui la funzione ricorrente viene collegata ad un vettore di
riferimento. Per ogni dato X, il valore della funzione in X dipende dal suo valore riferito al
dato precedente X – 1 e il numero totale di dati è uguale alla lunghezza, ovvero alla
dimensione, del vettore di riferimento;
Un esempio sulle funzioni ricorrenti (1)
Il Conto Deposito di Mercato Monetario è un'attività che vale 1 Euro al tempo 0 e consente di
guadagnare, in qualsiasi periodo di tempo dato, l'istantaneo tasso di interesse privo di rischio. A
partire da tale attività finanziaria possiamo definire una funzione denominata MMA (Money Market
Account) i cui parametri sono il tasso di interesse privo di rischio e gli istanti temporali nei quali
maturano gli interessi. La variabile r può essere stocastica. Se V1 è il processo stocastico che
descrive l'evoluzione temporale del tasso privo di rischio, la funzione MMA può essere
implementata utilizzando una Function defined by a recurrence expression – time steps (figure 3.14
e 3.15).
57
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.14: Recurrence Function MMA, tab Edit )
(Figura 3.15: Recurrence Function MMA, tab Preview)
Il dato iniziale del vettore MMA (ossia MMA[0]) è 1, mentre la funzione che descrive l'accumulo
degli interessi nel corso del tempo segue questa regola di ricorrenza: MMA[t – dt]*exp(V1[t –
dt]*dt) al tempo t. In altre parole, le unità di euro capitalizzano interessi al tasso definito dal
processo stocastico V1, con frequenza uguale a dt (un intervallo di tempo molto piccolo, ma già
discreto). Infine, la funzione che viene richiamata entro la modellazione del contratto oggetto di
analisi (nell'ambiente Option Map) come un vettore MMA[t] (figura 3.16) è la funzione descritta in
precedenza e valutata alla scadenza 1 del contratto medesimo.
58
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.16: Recurrence Function MMA, tab Timing and Payoff)
Un esempio di funzione ricorrente (2)
L'oggetto Recurrence Function può essere utile per prezzare i contratti derivati non standardizzati.
Ne è un esempio il contratto derivato Colar Reef Swap (letteralmente Swap Barriera Corallina –
figura 3.17) i cui payoff richiamano la forma di un rachet cap. Un rachet cap implica una serie di
regole per la determinazione del tasso cap per ciascun caplet. Generalmente esso è uguale al tasso
LIBOR rilevato alla precedente data di reset con l'aggiunta di uno spread.
Nel contratto derivato Colar Reef Swap la parte A paga il valore positivo del prodotto fra il tasso
EURIBOR a 3 mesi (rilevato in corrispondenza di certe date di reset) ed una funzione chiamata
Option (t). Quest'ultima, evidenziata nella figura con un bordo rosso, è una funzione ricorrente il cui
valore al tempo t è definito come:
Option (t) = Option (t -1) + R
Dove R è così determinato:
– se il tasso EURIBOR a 3 mesi è minore del 4,35%, allora sarà uguale a -0.20;
– se il tasso EURIBOR a 3 mesi è maggiore-uguale del 4,35%, allora sarà uguale a 1,50;
59
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.17: Colar Reef Swap - Determinazione del payoff)
L'editor della funzione definita da un'espressione ricorrente (ossia da un vettore) ha un nuovo
campo chiamato Array Reference, ossia il campo nel quale deve essere esplicitato il vettore dei dati
ai quali la funzione si riferisce (figura 3.18). In questo secondo esempio che stiamo discutendo il
vettore di riferimento è il vettore delle date di pagamento (ossia Pdu).
Il dato iniziale (Op[1]) è pari a R0 più il risultato del seguente costrutto di selezione:
iif(rate(Rd[1], maturity, @V1)<4,35%;-0.2;1.5)
(Figura 3.18: Recurrence Function Opt, Tab Editing)
R0 è una costante che esprime il valore della funzione Opt al tempo 0. L'altra parte dell'espressione
è, invece, il codice Fairmat per esprimere la funzione R. Se il tasso variabile
Rate(Rd[1];maturity;@V1) – il quale è una Interest Rate Function che esprime il tasso EURIBOR
con scadenza 3 a mesi, osservato al tempo Rd[1] e la cui dinamica è descritta attraverso un processo
stocastico V1 – è minore del 4,35% allora il payoff sarà uguale a -0.20, altrimenti sarà uguale a
1.50.
60
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.19: Recurrence Function Opt, Tab Preview)
La “Update Expression” è la stessa espressione Opt[X – 1] + iif(rate(Rd[X]; maturity;
@V1)<4,35%; -0.2; 1.5) con la sola eccezione che l'indice del vettore delle date di reset, ossia il
vettore Rd, è X, mentre l'indice della funzione Opt è X – 1.
In altre parole, la “Update Expression” assumerà ricorsivamente i valori:
Opt[1] + iif(rate(Rd[2]; maturity; @V1)<4,35%; -0.2; 1.5) all'istanza X = 2;
Opt[1] + iif(rate(Rd[3]; maturity; @V1)<4,35%; -0.2; 1.5) all'istanza X = 3;
e così via fino ad arrivare a:
Opt[lenght(@Pdu) - 1] + iif(rate(Rd[lenght(@Pdu)]; maturity; @V1)<4,35%; -0.2; 1.5) all'istanza
finale;
Infine, come la funzione ricorrente on time steps vista con il primo esempio, anche la funzione
ricorrente Opt vista con questo secondo esempio può essere utilizzata come un semplice vettore
entro la modellazione del contratto oggetto di analisi.
(Figura 3.20: Recurrence Function Opt, Tab Timing and Payoff)
61
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Transformations: un'introduzione
Solitamente un Vector Date (ovvero un vettore di date) può avere diversi significati:
a) Gli elementi del vettore sono le “payment dates” (date di pagamento): in questo caso, se una
“payment day” cade in un giorno non lavorativo, occorrerà un date rolling, ossia –
letteralmente – uno scorrimento di date, in base ad una data “business day convention”
(convenzione del giorno lavorativo) relativa ad uno specifico calendario;
b) Gli elementi del vettore sono le “payment dates” utilizzate per calcolare le date di reset: in
questo caso è necessario definire la “fixing convention” (convenzione fissante) di
riferimento – in particolare se il fixing si riferisce all'inizio del periodo, la convenzione sarà
di tipo Advanced; se, invece, il fixing si riferisce alla fine del periodo, la convenzione sarà di
tipo Arrears – e il numero di giorni lavorativi precedenti la data alla quale far riferire il reset
(ad esempio l'espressione “Advanced 2 business days before” significa due giorni lavorativi
precedenti l'inizio del periodo). Infine se la data di reset cade in un giorno non lavorativo,
occorrerà un date rolling in base ad una data “business day convention” relativa ad uno
specifico calendario;
c) Gli elementi del vettore vengono utilizzati, al pari di elementi adiacenti, per quantificare un
periodo di tempo durante il quale maturano gli interessi. Ciò determina il numero di giorni
intercorrenti fra due “payment dates”, l'una immediatamente successiva all'altra, in basa ad
una data “business day metric” (metrica dei giorni lavorativi). Infine, se la data utilizzata per
calcolare la maturazione degli interessi cade in un giorno non lavorativo, occorrerà un date
rolling in base ad una certa “business day convention” relativa ad uno specifico calendario;
La “business day convention” impostata di default sulle “payment dates” è Unadjusted (ossia non
aggiustata, non corretta, letteralmente), mentre la “business day metric” è Actual/actual. Il
calendario impostato di default è Italy (figura 3.21).
Possiamo sempre e comunque modificare manualmente la metrica implicita nel motore di
simulazione, il calendario e le convenzioni selezionando il percorso Settings → Project Preferences
→ Simulation Date and Conventions.
Il tab Simulation Dates and Conventions ci permette anche di definire le date temporali più
importanti quali: la Trading Date, o Simulation Start Date, (ossia la data di negoziazione o di
partenza della simulazione) – la quale si può modificare non solo dal tab in questione ma anche dal
menù della barra degli strumenti – e la Contract Initial Date, o Effective Date, (ossia la data di
inizio contratto).
Con Fairmat, inoltre, è possibile creare un nuovo Vector Date, vettore di output, modificando un
vettore già esistente preso come riferimento (utilizzando quindi un vettore in input). A tal fine, in
possiamo, in particolare, utilizzare le seguenti funzioni di trasformazione delle date:
– Date Vector Adjustment con la quale possiamo trasformare il Vector Date iniziale, il vettore
in input avente un numero costante di date, al fine di creare, note le “payment dates”, un
Vector Date avente le date fissate con la convenzione Advanced, allo scopo di regolare i
giorni non lavorativi relativi ad uno specifico calendario;
– Date Vector Differences con la quale possiamo creare un nuovo vettore computando le
differenze fra gli elementi di un Vector Date iniziale già esistente e preso a riferimento. Con
tale funzione di trasformazione possiamo, inoltre, specificare una “day count convention”
(convenzione per il conteggio dei giorni) e regolare le differenze per i giorni non lavorativi
relativi ad uno specifico calendario;
Prima di vedere in modo dettagliato ed approfondito le funzioni di trasformazione delle date appena
62
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
descritte, è necessario esplicitare bene il concetto appena accennato di “day count convention” e le
relative componenti, visto che queste “conventions” vengono create ed utilizzate da Fairmat proprio
nel momento in cui si ricorre a tali funzioni di conversione.
(Figura 3.21: Project Preferences – Business Day Convention)
Day Count Convention: uno sguardo generale
Le Day Count Conventions (letteralmente, come già accennato più sopra, le convenzioni per il
conteggio dei giorni – figura 3.22) di Fairmat ci permettono di determinare come viene calcolato
l'accumulo degli interessi nel tempo. Queste “conventions” vengono create da Fairmat nel momento
in cui ricorriamo all'utilizzo delle funzioni di trasformazione delle date (e quindi in particolare le
funzioni Date Vector Differences Transformation) applicate ad un dato Vector Date.
(Figura 3.22: Day Count Conventions – Uno sguardo generale)
63
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Le Day Count Conventions si possono suddividere in due componenti principali:
1) il Date Metrics Counter il quale specifica come i giorni debbano essere computati fra una
data di inizio ed una di fine;
2) la Date Metrics Convention che ci occorre nel caso in cui un “payment day” o, più in
generale, una data contrattuale utilizzata per calcolare l'accumulo degli interessi, cada in
corrispondenza o di un giorno non lavorativo o di una festività;
Generalmente è possibile un “melting-pot”, un miscuglio, fra queste due opzioni di convenzioni, per
cui, ad esempio, Actual/360 Unadjusted rappresenta l'accumulo degli interessi fra due date le quali
possono cadere in corrispondenza di una festività, ma il cui flusso di cassa (o i cui flussi di cassa)
relativo(i) viene (vengono) pagato(i) in corrispondenza di un giorno lavorativo.
Day Count Conventions: Date Metrics Counter
Le Date Metrics Counter utilizzabili in Fairmat (riepilogate nella figura 3.23) sono le seguenti:
•
Thirty360: è una Day Count Convention del tipo 30E+/360. Se definiamo una sequenza di
anni, mesi e giorni di ciascuna data (inizio e fine) come, rispettivamente, triple del tipo Ys,
Ms, Ds, per la data di inizio, e Ye, Me, De, per la data di fine, il fattore viene così calcolato:
360 * (Ye  Ys)  30 * ( Me  Ms )  ( De  Ds )
Fattore 
360
dove:
Ye corrisponde all'anno della data di fine;
Ys corrisponde all'anno della data di inizio;
Me corrisponde al mese della data di fine;
Ms corrisponde al mese della data di inizio;
De corrisponde al giorno della data di fine;
Ds corrisponde al giorno della data d inizio;
con le seguenti regole di aggiustamento, di correzione:
- se Ds è 31, allora Ds cambia e diventa pari a 30;
- se De è 31, allora Me cambia e passa al mese successivo mentre De cambia e diventa pari a
1;
Ad esempio, se la data di inizio è 28/02/2010 e la data di fine è 31/08/2010, si avranno allora
le seguenti triple Ys, Ms, Ds = 2010, 02, 28 e Ye, Me, De = 2010, 08, 31. Seguendo le regole
di aggiustamento delle date, De e Me cambiano e diventano pari, rispettivamente, a 01 e 09
e il fattore allora sarà il seguente:
360 * (2010  2010)  30 * (09  02)  (01  28) 360 * (0)  30 * (7)  27 237
Fattore 


 0,508333333
360
360
360
•
Actual365Fixed: è una Day Count Convention che computa al numeratore della frazione il
numero di giorni intercorrenti fra la data di inizio e la data di fine. Il denominatore della
frazione è fisso e pari a 365.
num( DataFine  DataInizio)
Fattore 
365
dove:
Edate indica la data di fine;
64
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Sdate indica la data di inizio;
e dove num (…) indica il numero di giorni intercorrenti fra le due date. Come possiamo
notare, il primo giorno del periodo in questione è incluso mentre l'ultimo giorno del
medesimo è escluso.
Ad esempio, se la data di inizio è 28/02/2010 e la data di fine è 31/08/2010, il fattore sarà:
num(31 / 08 / 2010  28 / 02 / 2010) 184
Fattore 

 0,5041095890
365
365
•
Actual/Actual: è una Day Count Convention del tipo ISDA. Tale convenzione richiede di
dividere il periodo di tempo fra i giorni compresi in un anno bisestile e i giorni non compresi
in un anno bisestile (se il periodo di tempo non è incluso in un anno bisestile la convenzione
Actual/Actual equivale precisamente alla convenzione Actual365Fixed). Il fattore sarà:
num(GG _ anno _ bisestile ) num(GG _ anno _ non _ bisestile )
Fattore 

365
366
Come nel caso della convenzione Actual365Fixed, anche la convenzione Actual/Actual
include il primo giorno del periodo in questione ma ne esclude l'ultimo. Vediamo ora alcuni
esempi per comprendere meglio il funzionamento del meccanismo relativo a tale
convenzione.
Primo esempio (il primo anno non è un anno bisestile, il secondo sì)
Se la data di inizio è 30/06/2007 e la data di fine è 30/06/2008 e se si definisce la soglia fra
l'anno 2007 e l'anno 2008 come la data del 31/12/2007. Il fattore sarà:
num(31 / 12 / 2007  30 / 06 / 2007 )  1 num(30 / 06 / 2008  31 / 12 / 2007 )  1
Fattore 


365
366
(184  1) (182  1)


 0,5068493150  0,4945355191  1,001384842
365
366
Secondo esempio (il primo anno è un anno bisestile, il secondo no)
Se la data di inizio è 30/06/2008 e la data di fine è 30/06/2009 e se si definisce la soglia fra
l'anno 2008 e l'anno 2009 come la data del 31/12/2008, il fattore sarà:
num(31 / 12 / 2008  30 / 06 / 2008)  1 num(30 / 06 / 2009  31 / 12 / 2008)  1
Fattore 


366
365
(184  1) (181  1)


 0,5054644809  0,4931506849  0,998615158
366
365
Terzo esempio (entrambi gli anni, sia il primo che il secondo, non sono bisestili)
Se la data di inizio è 30/06/2009 e la data di fine è 30/06/2010 e se si definisce la soglia fra
l'anno 2009 e l'anno 2010 con la data 31/12/2009, il fattore sarà:
num(30 / 06 / 2010  30 / 06 / 2009) 365
Fattore  0 

1
365
365
Si noti come in quest'ultimo esempio la convenzione Actual/Actual equivale alla
convenzione Actual365Fixed.
•
Actual360: è una convenzione che computa al numeratore della frazione il numero di giorni
intercorrenti fra la data di inizio e la data di fine. Il denominatore della frazione è fisso e pari
a 360.
65
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
num( DataFine  DataInizio)
360
dove num(...) indica il numero di giorni intercorrenti fra le due date. Come si può vedere il
primo giorno del periodo in questione è incluso mentre l'ultimo giorno del medesimo è
escluso.
Ad esempio, se la data di inizio è 28/02/2010 e la data di fine è 31/08/2010, il fattore sarà:
num(31 / 08 / 2010  28 / 02 / 2010) 184
Fattore 

 0,5111111111
360
360
Fattore 
•
Business252: è una convenzione che computa al numeratore della frazione il numero di
giorni intercorrenti fra la data di inizio e la data di fine. Il denominatore della frazione è
fisso e pari a 252.
num( DataFine  DataInizio)
Fattore 
252
dove num(...) indica il numero di giorni intercorrenti fra le due date. Come possiamo notare
il primo giorno del periodo in questione è incluso mentre l'ultimo giorno del medesimo è
escluso.
•
SimpleDayCounter: tale convenzione ha lo scopo di assicurare che le distanze temporali che
coprono un mese intero siano restituite come un semplice rapporto (ad esempio 1 anno
corrisponde a 1.0, 6 mesi corrispondono a 0.5, 3 mesi corrispondono a 0.25 e così via). Se si
definisce la sequenza di anni, mesi e giorni di ciascuna data come triple del tipo Ys, Ms, Ds e
Ye, Me, De rispettivamente per la data di inizio e la data di fine, il fattore viene così
calcolato:
( Me  Ms)
Fattore  (Ye  Ys) 
12
solo, però, se:
- Ds è uguale a De; oppure
- Ds è maggiore rispetto a De e, al tempo stesso, De è un giorno di fine mese; oppure
- Ds è minore rispetto a De e, al tempo stesso, Ds è un giorno di fine mese;
Altrimenti la convenzione SimplyDayCounter equivale alla convenzione Thirty360.
Ad esempio, se la data di inizio è 30/08/2000 e la data di fine è 28/02/2001, si avranno allora
le due triple Ys, Ms, Ds = 2000, 08, 30 e Ye, Me, De = 2001, 02, 28, il fattore sarà
(02  08)
(  6)
Fattore  (2001  2000) 
 1
 1  0,50  0,50
12
12
66
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.23: Day Count Conventions – Date Metrics Counter)
Date Metrics Conventions
Le Date Metrics Conventions sono convenzioni di aggiustamento, correzione, delle date specificate
o determinate con riferimento alla transazione. Questi aggiustamenti sono necessari qualora il
giorno cada in corrispondenza di un giorno non lavorativo. Tali convenzioni vengono create
nell'ambiente Parameters & Functions attraverso le funzioni di conversione delle date Date Vector
Adjustment Transformation applicate ad un dato Vector Date.
Le Date Metrics Conventions (riepilogate nella figura 3.24) utilizzabili in Fairmat che sono, in
particolare, le seguenti:
• Following: in base alla quale la data di riferimento sarà il primo giorno lavorativo
successivo. Ad esempio, la data del 28/02/2009 cade di Sabato (sesto giorno della settimana,
considerando Lunedì come primo giorno della settimana, e che non è un giorno lavorativo).
Il primo giorno lavorativo dopo i giorni del fine settimana (o di festività) è Lunedì
02/03/2009, per cui in base a tale convenzione la data di riferimento sarà, appunto, Lunedì
02/03/2009.
• Modified Following: in base alla quale la data di riferimento sarà il primo giorno lavorativo
successivo (come avviene con la convenzione Following che abbiamo appena visto), a meno
che il primo giorno lavorativo successivo non sia un giorno del mese di calendario
successivo; in quest'ultimo caso la data di riferimento sarà, invece, il primo giorno
lavorativo precedente. Ad esempio, la data del 28/02/2009 cade di Sabato (sesto giorno della
settimana, considerando Lunedì come primo giorno della settimana, e che non è un giorno
lavorativo). Il primo giorno lavorativo successivo dopo i giorni del fine settimana (o di
festività) è Lunedì 02/03/2009. Ciò implica però il cambio del mese (in quanto, infatti, si
passa da Febbraio a Marzo), perciò la data di riferimento in base in tale convenzione non
sarà Lunedì 02/03/2009 ma Venerdì 27/02/2009 (che è un giorno lavorativo).
• Preceding: in base alla quale la data di riferimento sarà il primo giorno lavorativo
precedente. Ad esempio, la data del 28/02/2009 cade di Sabato (sesto giorno della settimana,
67
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
•
•
considerando Lunedì come primo giorno della settimana, e che non è un giorno lavorativo).
Il primo giorno lavorativo precedente ai giorni del fine settimana (o di festività) è Venerdì
27/02/2009, per cui in base a tale convenzione la data di riferimento sarà, appunto, Venerdì
27/02/2009 (che è un giorno lavorativo).
Modified Preceding: in base alla quale la data di riferimento sarà il primo giorno lavorativo
precedente (come avviene con la convenzione Preceding, precedentemente descritta), a
meno che il primo giorno lavorativo precedente non sia un giorno del mese di calendario
precedente; in quest'ultimo caso la data di riferimento sarà, invece, il primo giorno
lavorativo successivo. Ad esempio, la data del 28/02/2009 cade di Sabato (sesto giorno della
settimana, considerando Lunedì come primo giorno della settimana, e che non è un giorno
lavorativo). Il primo giorno lavorativo precedente ai giorni del fine settimana (o di festività)
è Venerdì 27/02/2009. In questo caso non vi è stato il cambio del mese, perciò la data di
riferimento in base a tale convenzione resterà Venerdì 27/02/2009.
Altro esempio: la data del 01/03/2009 cade di Domenica (settimo ed ultimo giorno della
settimana, considerando Lunedì come primo giorno della settimana, e che non è un giorno
lavorativo, bensì festivo). Il primo giorno lavorativo precedente ai giorni del fine settimana
(o di festività) è Venerdì 27/02/2009. Tuttavia in questo caso si andrebbe al mese di
calendario precedente (indietreggiando, infatti, da Marzo a Febbraio), per cui, come
spiegato, in questo caso non si dovrà considerare il primo giorno lavorativo precedente,
bensì il primo giorno lavorativo successivo e perciò la data di riferimento in base a tale
convenzione sarà Lunedì 02/03/2009.
Unadjusted: in base alla quale non verrà applicata alcuna correzione, alcun aggiustamento,
al Vector Date di riferimento.
(Figura 3.24: Day Count Conventions – Date Metrics Conventions)
68
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Transformations: Date Vector Adjustment
La funzione di trasformazione Date Vector Adjustment è una funzione di conversione delle date che
ci permette di ottenere, partendo da un Vector Date in input (ossia partendo da un Vector Reference)
un altro vettore di date aggiustate (ovvero il vettore Name).
L'aggiustamento può essere riferito:
– alla scelta della “fixing convention” (in tal senso le scelte possibili sono: Arrears, Set di
Default o Advance);
– alla trasformazione di un vettore in input avente un numero costante di date;
– alla correzione per i giorni non lavorativi relativi ad un specifico calendario (“Date Metric”);
Nella finestra di editing della funzione di conversione delle date Date Vector Adjustment (figura
3.25) gli unici campi richiesti e da compilare sono “Name” e “Vector Reference”.
La conversione utilizza di default la funzionalità Inherit Project Date Metrics (letteralmente,
“ereditare le metriche del progetto per le date”), qualora il check-box relativo sia flaggato, in base a
quanto da noi impostato nel tab Simulation Dates and Conventions. Nell'esempio riportato nella
fugura 3.25, il numero di giorni da aggiungere, o da sottrarre, (da riportare nel campo “Add/Sub
Days”) al Vector Reference è nullo (ovvero pari a 0) mentre il tipo di reimpostazione delle date, di
reset, (da specificare valorizzando il campo “Reset Type”) selezionato è di tipo Arrears.
(Figura 3.25: Transformations, Date Vector Adjustment 1)
69
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Come possiamo notare osservando la figura 3.26, il Vector Reference è mostrato nella colonna
“Expression”, mentre la colonna “Values” mostra le date del vettore Name, ovvero del vettore
iniziale, di input, trasformato.
E' importante poi notare che il campo “Add/Sub Days” (aggiungere o togliere dei giorni) può
contenere solo valori numerici e di tipo costante, mentre il campo “Reset Type” può contenere, oltre
che dei caratteri alfabetici, anche un valore logico per definire la “fixing convention” (in particolare
il valore 0 equivale a stabilire la convenzione Advance, mentre il valore 1 equivale a stabilire la
convenzione Arrears). Ma possiamo anche impostare un'altra “fixing convention”, un diverso
numero di giorni da aggiungere (se il valore inserito nel campo “Add/Sub Days” è positivo) o da
sottrarre (se il valore inserito nel campo “Add/Sub Days” è negativo) al Vector Reference e,
disabilitando la funzionalità Inherit Project Date Metric (levando il flag dal relativo check-box),
un'altra “business day convention”.
Notiamo poi che nel caso in cui il Reset Type impostato sia di tipo Advance (o, in modo equivalente,
impostato sul valore logico corrispondente, ovvero 0), il fixing avverrà all'inizio del periodo di
riferimento. In tal modo, con riferimento al k-esimo elemento del vettore di output (ovvero del
vettore Name), Fairmat si riferirà al k-esimo – 1 elemento del vettore in input (ovvero del Vector
Reference). Per cui per il primo elemento del vettore Name (corrispondente alla posizione k=1 del
vettore stesso in quanto l'indice del vettore parte da 1), l'elemento di riferimento sarà, di default, la
Contract Initial Date, impostata nel tab Simulation Dates and Conventions.
(Figura 3.26: Transformations, Date Vector Adjustment 2)
Un esempio ci permetterà di comprendere meglio quanto finora esplicitato e la differenza fra il
fixing Advance e quello Arrears.
Supponiamo di detenere un'obbligazione con data di negoziazione (Trade Date) 16/06/2010, data di
inizio contratto (Effective Date) 27/06/2010, durata 5 anni e frequenza di pagamento semestrale.
Supponiamo poi che il fixing del tasso variabile sia in Arrears di 2 giorni (ovvero arretrando nel
70
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
calendario di 2 giorni lavorativi) e segue una precedente “business day convention”.
Il risultato della trasformazione del Vector Date alle convenzioni di fixing supposte è il vettore
Name (figura 3.27).
(Figura 3.27: Transformations, Date Vector Adjustment 3)
Vogliamo ora ottenere, partendo da un Vector Date (Pdu) ed utilizzando una costante (Rday), il
vettore delle date di reset.
Dall'ambiente Parameters & Functions, cliccando sul comando “Add” e selezionando l'oggetto
Date Vector Adjustment, facendo doppio click sullo stesso oggetto, apriremo la finestra di editing,
(figura 3.28).
A questo punto dovremo riempire i campi “Name” (scrivendovi Rd) e “Vector Reference”
(scrivendovi Pdu). Nel campo “Add/Sub Day” dovremo inserire invece l'oggetto scalar Rday
(ricordiamo, infatti, che tale campo deve contenere un valore costante, uno scalare). Dovremo poi
togliere il flag dal check-box relativo alla funzionalità Inherit Project Date Metrics, in modo da
disabilitare tale funzionalità, ed impostare le metriche locali per le date (nello specifico la “business
day convention” Preceding).
71
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Infine, dovremo selezionare, dal menù a tendina il “Reset Type”, la voce Arrears, o, più
semplicemente, digitare 1, ovvero il valore logico corrispondente (figura 3.28).
Qualora si voglia stabilire il fixing Advance, si dovrà allora impostare il “Reset Type”, valorizzando
il relativo menù a tendina, con la voce Advance, o più semplicemente, digitando 0, ovvero il valore
logico corrispondente.
Notiamo, osservando ancora la figura 3.28, come il primo elemento del vettore Value (ovvero il
vettore Name contenente le date convertite, trasformate) si riferisce alla Contract Initial Date.
(Figura 3.28: Transformations, Date Vector Adjustment 4)
72
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Transformations: Date Vector Differences Calculator
La funzione di conversione delle date Date Vector Differences Calculator calcola le differenze tra
elementi adiacenti (continui) del Vector Reference. La correzione può essere relativa:
– alla scelta del primo elemento del Vector Reference per il calcolo del primo elemento del
vettore di output, diversamente che nel caso della funzione di conversione Date Vector
Adjustment, per la quale, in caso di fixing Advance, il primo elemento preso come
riferimento è la Contract Initial Date specificata nel tab Simulation Dates and Conventions,
come già si è avuto modo di vedere nel precedente paragrafo;
– alla correzione per i giorni non lavorativi in relazione ad uno specifico calendario (“date
metric”), prima del calcolo delle differenze fra elementi adiacenti, continui, del Vector
Reference;
– alla scelta del “business day metric” al fine di determinare il numero di giorni intercorrenti
fra due “payment days” immediatamente successivi l'uno all'altro;
Nella finestra di editing della funzione di conversione delle date Date Vector Differences Calculator
(figura 3.29) gli unici campi richiesti e da compilare sono “Name” e “Vector Reference”. La
conversione utilizza di default, come dato addizionale, la Contract Initial Date e la funzionalità
Inherit Project Date Metrics (flaggando il relativo check-box).
Il Vector Reference è mostrato nella colonna “Reference”, mentre la colonna “Differences” mostra il
vettore Name (figura 3.29).
Notiamo, osservando ancora una volta la figura 3.29, il vettore Name ha la stessa dimensione del
Vector Reference, nell'esempio specifico pari a 10x1. Ciò in quanto, attraverso la funzionalità
Transformation Mode, Fairmat aggiunge una data “addizionale” al Vector Reference prima del
calcolo delle differenze.
Le opzioni relativa alla funzionalità Transformation Mode sono:
– “Add the Start Contract Date” (Aggiungi la data di inizio contratto): in base a questa
opzione inseriamo come data addizionale la Start Contract Date (o Effective Date) come
specificata nel tab Simulation Dates and Conventions. Come notato sopra, essa è la stessa
data addizionale vista nel paragrafo precedente, durante la trattazione della funzione di
trasformazione Date Vector Adjustment nel caso in cui il Reset Type sia di tipo Advance;
– “Add the Start Simulation Date” (Aggiungi la data di inizio simulazione): in base a questa
opzione inseriamo come data addizionale la Start Simulation Date (o la Trading Date) come
specificata nel tab Simulation and Dates Conventions. Tale opzione è molto utile per
calcolare un prezzo quotato (come avremo modo di vedere meglio con l'esempio che verrà
illustrato più avanti);
– “Add a custom date”: con questa opzione abilitiamo un campo nel quale possiamo inserire
come data addizionale, una data differente dalle due precedenti, ovvero differente rispetto
sia all'Effective Date che alla Trading Date;
– “Use only the references dates option (no additional date used – nessun utilizzo di date
addizionali): in base a questa opzione non si aggiungiamo nessun altro elemento, nessuna
data addizionale. Solo in quest'ultimo caso, il vettore di output avrà un elemento un meno
rispetto al Vector Reference, ovvero al vettore in input.
73
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.29: Transformations, Date Vector Differences Calculator 1)
Vediamo ora, nel dettaglio e attraverso un esempio, il comportamento della funzione di conversione
delle date Date Vector Differences Calculator
L'esempio che segue si riferisce, in particolare, ad un vettore di dieci elementi che parte dalla data
del 20/03/2011 e termina alla data del 20/03/2020, con frequenza annuale.
La convenzione per il conteggio dei giorni è Actual/360, Unadjusted.
Nel primo caso (figura 3.30), la data addizionale (ovvero 20/03/2010) è inferiore, è più remota,
rispetto al primo elemento del Vector Reference. Per cui, come possiamo notare, Fairmat compie
una fusione ordinata fra la costante Additional Date e il Vector Reference prima di determinare il
Vector Differences (ovvero il vettore delle differenze, il vettore di output). La finestra di editing
della funzione di conversione delle date Date Vector Differences Calculator mostra sia il Vector
Reference che il Vector Difference (figura 3.30).
Nel secondo caso (figura 3.31), la data addizionale (15/12/2015) è compresa fra le date del Vector
Reference.
74
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.30: Transformations, Date Vector Differences Calculator 2)
(Figura 3.31: Transformations, Date Vector Differences Calculator 3)
Un ulteriore esempio ci aiuterà a comprendere meglio e a fondo il meccanismo legato alla
trasformazione delle date. Come riferimento utilizzeremo il meccanismo di calcolo del prezzo a
pronti e quello del prezzo quotato per un'obbligazione a tasso fisso.
Il prezzo quotato, al quale i traders fanno riferimento per le loro negoziazioni e che viene anche
definito come prezzo cosiddetto “secco”, non è esattamente identico al prezzo a pronti pagato
dall'acquirente di un'obbligazione, in quanto i traders generalmente identificano tale prezzo come
75
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
prezzo “tel quel”. In generale vale, quindi, la seguente identità:
Prezzo a Pronti = Prezzo Quotato + Interessi maturati dalla data di stacco dell'ultima cedola
Supponiamo che la data di stacco dell'ultima cedola sia il 09/03/2010 e consideriamo
un'obbligazione con cedola pari al 6% annuo con scadenza Ottobre 2011 e che prevede una
frequenza di pagamento delle cedole semestrale.
La yield curve (o curva dei rendimenti) è riportata nella tabella 3.1:
(Tabella 3.1 – Esempio Date Vector Differences Calculator, Definizione yield curve)
ANNO
1
2
3
4
5
TASSO A
PRONTI
3,25%
4,25%
4,85%
5,25%
5,55%
Vogliamo ora calcolare il prezzo di riferimento e il prezzo a pronti dell'obbligazione in questione
alla Valuation Date. Per far ciò dobbiamo creare un nuovo file .fair e poi aggiornare, una volta
selezionato il percorso Settings → Project Preferences → Simulation Dates and Conventions, i
campi sottostanti alla dicitura “Absolute timing dates” (figura 3.32) ovvero sia: “Simulation Start
Date (o Trading Date)”, inserendovi la data corrispondente alla Valuation Date (ovvero sia la data
del 09/03/2010 nel caso preso in esame), e “Effective Date (o Contract Initial Date)”, inserendovi la
data di inizio contratto (ovvero sia la data del 23/10/2008 nel caso preso in esame).
Nell'ambiente Parameters & Functions dovremo inserire poi gli oggetti necessari per costruire
l'obbligazione a tasso e più precisamente sarà necessario inserire i seguenti oggetti:
– due Scalar riferiti, rispettivamente, al tasso cedolare e al valore nozionale del contratto;
– una Interpolated Function la quale rappresenterà la yield curve, ovvero la curva dei
rendimenti (figura 3.33);
– una Date Sequence la quale rappresenterà il Vector Dates. Per semplicità, assumiamo che
non ci siano correzioni di base alla “business day convention”;
– una funzione di trasformazione delle date Date Vector Differences Calculator per calcolare i
periodi di maturazione degli interessi per ciascuna cedola;
Notiamo che, dal momento che la Valuation Date è antecedente alla data di esecuzione, i primi due
periodi, corrispondenti a t=1 e t=2, non verranno considerati.
76
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.32: Transformations, Date Vector Differences Calculator 4)
(Figura 3.33: Transformations, Date Vector Differences Calculator 5)
Dopo di ché si dovremo entrare nell'ambiente Option Map ed inserire una Strip of Options (ovvero
una serie di opzioni), la quale rappresenterà i pagamenti delle cedole periodiche, accompagnata ad
una Single Option, la quale rappresenta il flusso di cassa relativo al rimborso finale del capitale alla
scadenza. Infine, dovremo aggiornare il tab Discounting con una funzione di attualizzazione
deterministica. La funzione esponenziale negativa utilizzerà nello specifico la funzione interpolante
ZR. Nell'esempio descritto stiamo utilizzando tassi di interesse composti continui.
Come già esplicitato in precedenza, il prezzo a pronti include gli interessi maturati. Selezionando
come elemento addizionale la Contract Initial Date, il terzo elemento del vettore CVG (vettore
77
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
derivante dalla trasformazione Date Vector Differences Calculator), ossia CVG[3], si riferisce
all'intero periodo intercorrente fra PD[2] (ovvero il secondo elemento del vettore PD, Vector
Reference, corrispondente nel caso specifico preso in esame alla data del 22/10/2009), incluso, e
PD[3] (ovvero il terzo elemento del vettore PD, Vector Reference, corrispondente nel caso specifico
preso in esame alla data del 22/04/2010), escluso.
Selezionando, invece, come elemento addizionale la Simulation Start Date, il terzo elemento del
vettore CVG, ossia CVG[3], si riferisce soltanto al lasso temporale intercorrente fra la Simulation
Start Date (corrispondente, nel caso specifico preso in esame, alla data del 09/03/2010), inclusa, e il
terzo elemento del vettore PD, ossia PD[3] (corrispondente, nel caso specifico preso in esame, alla
data del 22/04/2010), escluso. Questo è il prezzo di riferimento.
Notiamo che la differenza tra il prezzo a pronti e il prezzo di riferimento è quindi data dagli
interessi maturati dalla data di stacco dell'ultima cedola, rispetto alla Valuation Date.
(Figura 3.34: Transformations, Date Vector Differences Calculator 6)
78
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Transformations: Zero Rate Curve Calculator
Con il calibratore ZR possiamo calcolare una yield curve (o curva dei rendimenti) partendo dai dati
di mercato. I dati di mercato utilizzati come input sono i prezzi a pronti, i tassi sui contratti F.R.A.
(Forward Rate Agreement, ossia gli accordi sui tassi di interesse futuri) e i tassi sui contratti Swaps,
e sono rappresentati attraverso matrici di dimensione Nx2 nelle quali ogni riga indica una differente
scadenza, per cui la prima colonna riporta le varie scadenze mentre la seconda colonna riporta i
tassi di interesse corrispondenti.
Il calcolo della yield curve, e quindi la calibrazione, può essere effettuato utilizzando due metodi:
1) Metodo “Bootstrap” con il quale i nodes (i nodi), indicanti ciascuno un tasso sui zero
coupon bond e corrispondenti ai tassi a pronti e ai tassi sui contratti F.R.A., vengono
calcolati direttamente dai dati di mercato mentre gli altri nodes vengono calcolati in modo
ricorsivo a partire dai tassi sui contratti Swaps;
2) Metodo “Least Square” (minimi quadrati) con il quale i nodes, ciascuno corrispondente ad
un tasso sui zero coupon bond, vengono fissati minimizzando la somma degli scarti al
quadrato fra i tassi di mercato a pronti, i tassi sui contratti F.R.A., i tassi sui contratti Swaps
e quelli calcolati a partire dai tassi sui zero coupon bond, ovvero le obbligazioni prive di
cedola;
In entrambi i casi, i campi da compilare nel tab Edit (figura 3.35):
– il “Calibration Method” (metodo di calibrazione) il quale si riferisce al metodo di
calibrazione prescelto. Le scelte possibili in tal senso sono, come già accennato sopra, o
“Bootstrap” o “Least Square”;
– i “Cash Rates” (tassi a pronti) i quali si riferiscono alla matrice dei tassi a pronti;
– i “F.R.A. Rates” (tassi sui contratti F.R.A.) i quali si riferiscono alla matrice dei tassi sui
contratti F.R.A.;
– i “Swaps Rates” (tassi sui contratti Swaps) i quali si riferiscono alla matrice dei tassi sui
contratti Swaps;
– il “Market” (mercato) il quale si riferisce al mercato di riferimento;
– il “Number of Swap coupon payed every year” (numero di cedole sui contratti Swaps pagate
ogni anno) il quale si riferisce al numero di cedole pagate attraverso contratti Swaps i cui
tassi sono ricavabili dalla matrice dei tassi sui contratti Swaps (ovvero la matrice “Swaps
Rates”);
(Figura 3.35: Zero Rate Curve Calculator)
79
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
L'ambiente Stochastic Processes
Quando al modello aggiungiamo un processo stocastico, Fairmat genera in automatico dei simboli
in modo tale da avere un riferimento al processo stocastico generato, o per far sì che possiamo
acquisirne i valori delle realizzazioni.
In particolare, se nel modello vi sono N processi stocastici inseriti, Fairmat genererà in automatico i
seguenti simboli: V1, V2, …, VN e @V1, @V2, …, @VN.
Vi rappresenta il valore dell'i-esima attività sottostante, valutata nella corrente realizzazione delle
incertezze e alla data corrente, mentre @Vi è un riferimento all'i-esima attività sottostante.
Questo linguaggio algebrico ci aiuta a scrivere complesse espressioni dei payoff he dipendono, si
basano, (appunto) su processi stocastici.
Per esempio, se V1 è un processo stocastico e K è una costante, possiamo scrivere una semplice
opzione call scrivendo semplicemente la seguente espressione: Max(V1-K; 0).
In alcune circostanze potremmo poi essere interessati non tanto al processo stocastico nella sua
interezza, ovvero nella sua totalità, ma soltanto ad alcune sue componenti. Come, ad esempio,
potrebbe accadere qualora utilizzassimo come processo stocastico di riferimento il modello JarrowYildrim, per il quale, nel caso specifico, la componente V1a potrebbe identificare la componente
relativa al tasso nominale di interesse, la componente V1b potrebbe identificare la componente
relativa al tasso reale di interesse e, infine, la componente V1c potrebbe identificare l'indice dei
prezzi dei beni al consumo.
I processi stocastici disponibili in Fairmat sono diversi e suddivisibili in due grandi categorie:
“Interest Rate Processes” (ovvero Processi relativi ai Tassi di Interesse) e “Other Processes” (ovvero
Altri Processi).
Più nel dettaglio fra gli “Interest Rate Processes” rientrano i seguenti processi stocastici:
1) Cox-Rubinstein Ingersoll;
2) Dai-Sigleton Interest Rate Model;
3) Hull&White 2 Factors (modello a due parametri);
4) Jarrow-Yildrim;
5) LIBOR Market Model;
6) Pelsser-Squared Gaussian Model;
Fra gli “Other Processes” rientrano invece i seguenti processi:
1) Custom Dynamic;
2) Generic Itô Process (semplice);
3) Generic Log-Itô Process (logaritmico);
4) Geometric Brownian Motion Process;
5) Heston;
6) Heston with time dependent drift;
7) Log-Mean Reverting Process;
8) Mean-Reverting Process;
9) Multivariate Geometric Brownian Motion Process;
10) Poisson Arrival;
Una descrizione dettagliata riguardante i principali modelli appena elencati (e, in particolare, i
processi Geometric Brownian Motion, Mean-Reverting, Log-Mean Reverting, Generic Itô, Generic
Log-Itô e Poisson Arrival) verrà fornita nel Capitolo 5 dedicata alla modellazione dei contratti
finanziari, nel quale, appunto, esamineremo da un punto di vista formale e dettagliato i vari modelli
finanziari disponibili in Fairmat per la modellazione dei contratti finanziari.
80
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Per inserire un processo stocastico in Fairmat dobbiao cliccare sul tab Stochastic Processes posto
sul lato sinistro della finestra generale di Fairmat e scegliere il comando Add S.Process (figura
3.36).
Si tenga presente che, nel caso dei modelli stocastici “Interest Rate” (ossia quelli basati sui tassi di
interesse), dobbiamo associare al processo una struttura per scadenze dei tassi di interesse.
Nel momento in cui selezioniamo il comando “Add S. Process”, Fairmat in automatico crea una
nuova Zero Rate Function, a meno che non indichiamo una curva alternativa (ossia un oggetto
denominato Function defined by value interpolation) già caricata nell'ambiente Parameters &
Functions.
(Figura 3.36: Inserimento di un processo stocastico in Fairmat)
81
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.37: Inserimento di una Interpolated Function nell'ambiente Stochastic Processes)
(Figura 3.38: Elenco dei modelli stocastici disponibili in Fairmat)
Cliccando sul comando “Add Asset Set” possiamo inserire un gruppo di processi stocastici fra
quelli inseriti in precedenza (ad esempio, possiamo inserire il gruppo di processi denominato Asset1
e comprendente i processi V1 e V2 – figura 3.39). L'editor del comando “Add Asset Set” ci permette
di creare un nuovo gruppo di processi da un box contenente una lista iniziale che, a sua volta,
contiene tutti i processi che abbiamo inserito in precedenza.
82
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.39: Inserimento di gruppi di processi stocastici, comando “Add Asset Set”)
Il comando “Remove” ci permette di rimuovere un processo stocastico (o un gruppo di processi
stocastici, o meglio un Asset Set di processi stocastici) dalla lista dei processi stocastici inseriti.
Il comando “Correlations” (figura 3.40), invece, permette di mettere in mostra le correlazioni tra
due o più processi stocastici. Si noti che se un processo stocastico è composto da due o più
componenti, la matrice delle correlazioni mostra anche le correlazioni fra le componenti del
medesimo. Per esempio, se selezioniamo come processo stocastico di riferimento il processo
Hull&White 2, a due parametri, la matrice delle correlazioni ci mostrerà, oltre che le possibili
correlazioni con altri processi stocastici eventualmente selezionati ed inseriti, anche le correlazioni
fra la componente primaria del processo Hull&White e la sua componente secondaria.
(Figura 3.40: Correlazioni fra processi stocastici, comando “Correlations”)
83
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Un esempio di inserimento di un processo stocastico: Geometric Brownian Motion
Vediamo ora mostrato un esempio di inserimento in Fairmat di un processo stocastico (figura 3.41).
Supponiamo di voler inserire il processo stocastico Geometric Brownian Motion.
Per inserire tale processo stocastico, dobbiamo selezionare il seguente percorso: Stochastic
Processes → Add S. Process → Geometric Brownian Motion (GBM) → OK.
Dopo di ché dobbiamo fare doppio click sul processo stocastico V1 appena creato, selezionare il tab
GBM e compilare i seguenti campi:
– “Base Value” (o “Starting Value”) che si ipotizza, nell'esempio riportato, pari a 100;
– “Volatility” (ipotizzata, nell'esempio, pari a 74);
– è necessario poi scegliere la combinazione dei “Control Parameters” e le scelte possibili in
tal senso sono, in particolare, o “Dividend Yield” e “Growth Rate; Risk Premium”. Si
supponga di voler scegliere quest'ultima combinazione e di porre un valore per il “Growth
Rate” pari al 5%;
(Figura 3.41: Esempio di inserimento di un processo stocastico: GBM)
I valori preimpostati, di default, per i campi “Preview Paths” e “Preview Steps”, presenti sotto il tab
Preview e visibili dopo aver selezionato il percorso Settings → Fairmat Preferences → Core
Preferences → Preview, sono 500 e 25. Tuttavia possiamo impostare valori differenti, qualora lo si
ritenga necessario ed opportuno.
Il tab Preview della finestra di editing del processo stocastico (figura 3.41) ci permette di
visualizzare un'anteprima della dinamica del medesimo (selezionando il sotto-tab Dynamic) e la sua
distribuzione (selezionando il sotto-tab Distribution) lungo un dato orizzonte temporale (fissabile
con lo slider posto sotto il grafico della distribuzione stessa).
84
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.42: Impostazione dei parametri di un processo stocastico)
Il Tab Data Source
Qualora si utilizzasse la versione Professional di Fairmat, è disponibile il tab Data Source (figura
3.43). Tale tab ci permette di specificare come i dati di un processo stocastico sono connessi ad uno
specifico mercato (o ad una specifica attività finanziaria) mediante l'indicazione del loro mercato di
riferimento e del loro ticker, ovvero sia del loro codice, alfanumerico e di tipo arbitrario, di
riconoscimento. Di conseguenza, Fairmat calibrerà i parametri del processo stocastico utilizzando i
dati di mercato disponibili dal Market Data Provider prescelto (quale può essere, ad esempio,
Bloomberg Professional).
Rispetto alla versione Academic, la versione Professional di Fairmat dispone quindi di un tab
aggiuntivo, il tab Data Source per l'appunto.
(Figura 3.43: il Tab Data Source)
85
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Dal tab Data Source dell'editor dell'ambiente Stochastic Processes, possiamo selezionare e
valorizzare, attraverso una serie di menù a tendina, i seguenti campi (figure 3.44, 3.45 e 3.46):
– “Market” (ossia il mercato di riferimento);
– “Ticker”: è un campo che contiene il codice Bloomberg Professional per lo specifico indice
di mercato borsistico (o specifico titolo o specifica attività finanziaria) a cui il processo
stocastico deve riferirsi. Nell'esempio riportato nella 3.43, il codice SX5E si riferisce
all'indice EURO STOXX 50;
(Figura 3.44: Il Tab Data Source – Campo “Market”)
– “Calibration Strategy” (strategia di calibrazione): la quale dipende dal modello stocastico
prescelto. Nell'esempio mostrato attraverso le figure 3.43 e 3.45, è stato scelto, in
particolare, il modello Heston;
(Figura 3.45: il Tab Data Source – Campo Calibration Strategy 1)
Dopo aver valorizzato questi campi ed inserite queste impostazioni (ipotizziamo, per esempio, di
aver valorizzato nel seguente modo i campi appena illustrati: “Market” → EU; “Ticker” → SXE5
Index → “Calibration Strategy” → Heston Estimator.CallEstimator), possiamo procedere con la
calibrazione del modello semplicemente cliccando il tasto destro del mouse una volta selezionato lo
stesso e poi selezionando il comando “Calibrate Model Using Data Provider”.
A questo punto Fairmat aggiornerà automaticamente i parametri del modello (figura 3.46).
86
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.46: il Tab Data Source – Campo Calibration Strategy 2)
I dati di input utilizzati per la calibrazione sono mostrati nel Market Data Manager.
Nel form Plug-ins Preferences del sottomenù Fairmat Preferences possiamo impostare e
controllare, in ogni minimo dettaglio, la calibrazione dei processi stocastici inseriti.
87
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
L'ambiente Discounting
Nell'ambiente Discounting possiamo utilizzare due sistemi che, si precisa, non sono affatto
alternativi fra loro ma che, anzi, possono coesistere al tempo stesso nell'ambito del medesimo
progetto, come avremo modo di precisare meglio più avanti. Tali sistemi sono, in particolare:
– il sistema Global (Project) Discounting;
– il sistema Option Dependent Discounting;
Il sistema Global (Project) Discounting
Nell'ambito del sistema Global (Project) Discounting possiamo scegliere fra tre differenti modi per
impostare il modello di discounting (o di attualizzazione):
1) Use Constant Risk Free Rate (Utilizzo di un tasso di interesse privo di rischio – figura 3.47):
si tratta di un modello di discounting (o di attualizzazione) da utilizzare quando il tasso di
interesse annuo risk free, ossia il tasso di interesse annuo privo di rischio, è costante; una
situazione del genere avviene, per esempio, nel caso della valutazione delle Real Options.
In questo caso dobbiamo semplicemente inserire il valore del tasso risk free nel campo
“Risk Free Rate (RF =)”;
(Figura 3.47: Sistema Global (Project) Discounting, Use Constant Risk Free Rate)
2) Use Deterministic Expression (Utilizzo di un'espressione deterministica – figura 3.48): si
tratta di un modello di discounting da utilizzare quando la struttura per scadenze dei tassi di
interesse non è piatta o quando si vuole utilizzare un'espressione personalizzata per
attualizzare i payoff del contratto. Se si sceglie di utilizzare tale modello dobbiamo inserire
nel campo “Discounting Expression (f(t) =) un'espressione di attualizzazione (nell'esempio
riportato in figura l'espressione inserita è exp(-zr(t)*t) dove zr è una funzione con variabile
88
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
indipendente t). In particolare, la variabile t, definita dal simulatore, rappresenta il tempo
(espresso in frazioni d'anno) trascorso dalla Simulation Date;
(Figura 3.48: Sistema Global (Project) Discounting, Use Deterministic Expression)
3) Use Dynamic Term Structure (Utilizzo di una struttura per scadenze dinamica – figura 3.49):
si tratta di un modello di discounting da utilizzare quando il tasso risk free viene modellato,
determinato, da un qualche modello stocastico, quali possono essere ad esempio i modelli
Hull&White o Dai-Singleton. In questo caso Fairmat sceglierà automaticamente un modello
di discounting coerente con il modello stocastico specificato.
Se scegliamo di utilizzare tale modello di discounting, dobbiamo scrivere nel campo
“Stochastic Processes Reference (e.g. @V1)” un riferimento appunto al processo stocastico
sottostante per la modellazione del tasso risk free;
(Figura 3.49: Sistema Global (Project) Discounting, Use Dynamic Term Structure)
89
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Qualora dovessimo utilizzare un tasso di interesse costituito da una componente risk free più una
componente spread, si possono anche immettere due modelli stocastici @V1; @V2. In questo caso
Fairmat automaticamente sceglierà un modello di discounting coerente con i processi inseriti e il
fattore di sconto dipenderà quindi da entrambe le variabili (tasso risk free e spread).
Quindi questo modello di discounting può essere molto utile quando la valutazione utilizza un tasso
costituito da un tasso risk free più una componente, uno spread, che esprime il merito creditizio di
uno dei contraenti.
Qualche volta il credit spread può essere modellato sulla base di una funzione di ripartizione (o di
sopravvivenza statistica) del tipo f(t). In questo caso possiamo scrivere @V1; @f (si veda ancora
una volta la figura 3.49) e Fairmat prenderà in considerazione la corretta composizione dei fattori di
sconto. In particolare, il fattore di sconto (dato da f(t)), riferito al lasso temporale che va dal tempo
t1 fino al tempo t0 (con t1 > t0), sarà calcolato con il rapporto f(t1)/f(t0).
Il sistema Option Dependent Discounting
I modelli di discounting appena descritti possono essere fissati nell'ambito o di una specifica
Standard Option o nell'ambito di una specifica Strip of Options semplicemente selezionando la
linguetta Custom Discounting presente nella scheda del form dell'opzione creata nell'ambiente
Option Map (accessibile facendo doppio click sul form dell'opzione stessa) e modificandone le
impostazioni (figura 3.50).
Con questa configurazione “locale”, ovvero riferita non alla globalità del progetto bensì ad una
singola opzione, o solo ad una serie di opzioni, possiamo specificare un differente modello di
discounting per ciascuna opzione creata.
In particolare, una volta selezionato il tab Custom Discounting della finestra di editing dell'Option
creata nell'Option Map, possiamo compiere due scelte alternative:
A) Inherit discounting structure from parent node or project (ereditare il modello di discounting
o da un nodo iniziale o dal progetto): selezionando questa funzionalità Fairmat utilizzerà il
modello di discounting definito in precedenza per l'opzione corrente; oppure
B) Use custom discounting (utilizzare un modello di discounting personalizzato): selezionando
questa funzionalità Fairmat ci permetterà di definire un modello di discounting
personalizzato per l'opzione corrente (e per le sue opzioni successive nel caso in cui non ci
siano ulteriori specificazioni);
(Figura 3.50: Sistema Option Dependent Discounting)
90
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Più nel dettaglio, il sistema Option Dependent Discounting funziona nel seguente modo: se un nodo
è stato dichiarato come un modello di discounting personalizzato, Fairmat compirà i seguenti
passaggi:
– se l'opzione inserita è un'opzione di tipo Americano (ovvero esercitabile in un qualunque
momento precedente la data di scadenza), per determinare il valore attuale del suo valore di
continuazione verrà utilizzato un modello di discounting adatto per questo tipo di opzione
(laddove specificato);
– se un'opzione A è seguita, collegata, da un'opzione B di tipo composto, per l'attualizzazione
dei payoff composti, ovvero derivanti dalla combinazione delle due opzioni A e B, verrà
utilizzato il modello di discounting dell'opzione composta (ovvero dell'opzione B);
– se nell'ambiente Option Map abbiamo inserito degli operatori funzionali, quali ad esempio
Sum, Average o Functional (che vedremo più nel dettaglio in seguito, nei paragrafi dedicati,
appunto, agli operatori funzionali), tali operatori utilizzeranno i modelli di discounting delle
opzioni successive (laddove specificato);
Come già anticipato in precedenza, i sistemi Global (Project) Discounting e Option Dependent
Discounting non sono l'uno alternativo all'altro in assoluto, ma possono coesistere nell'ambito del
medesimo progetto. A livello generale, il sistema Global (Project) funziona, si applica, sull'intero
progetto, sull'intera Option Map del progetto, a meno che non impostiamo uno specifico sistema
Option Dependent Discounting su uno dei branch (dei rami) della Option Map, ovvero su una Strip
of Options o su una singola Standard Option. In questo caso, allora, il sistema Global (Project)
Discounting funziona, si applica, sull'intero progetto, sull'intera Option Map del progetto con le
eccezioni legate a quel specifico branch, o a quella specifica Strip of Options, o a quella specifica
Standard Option, a cui il sistema di discounting “locale”, ovvero il sistema Option Dependent
Discounting, fa riferimento.
L'ambiente Discounting e le funzioni ricorrenti
L'ambiente Discounting di Fairmat supporta anche le funzioni ricorrenti. In questo caso dovremo
definire una funzione ricorrente (quale può essere, ad esempio, la funzione Disc – figura 3.51) e
collegare il modello di discounting a tale funzione mediante il simbolo @ (inserendo nell'apposito
campo “Stochastic Processes (e.g. @V1), ad esempio @Disc).
(Figura 3.51: Ambiente Discounting e funzioni ricorrenti)
91
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
L'Ambiente Option Map
Con Fairmat possiamo descrivere l'iterazione fra pagamenti e decisioni di pagamento mediante un
apposito ambiente Option Map (figura 3.52) il quale ci permette di modellare, con uno stile grafico,
le decisioni e le dipendenze dalle decisioni.
(Figura 3.52: Ambiente Option Map)
Vedremo ora nel dettaglio:
1) Come inserire e comporre nell'ambiente Option Map le Standard Options e le Strip of
Options;
2) Come utilizzare nell'ambiente Option Map gli operatori funzionali disponibili;
3) Come modellare le decisioni nell'ambiente Option Map utilizzando i branches (ovvero i
rami della struttura decisionale);
4) Come creare degli scenari per l'ambiente Option Map e gestirli (in realtà quest'ultimo
aspetto verrà esplicitato non nel corso del presente paragrafo ma nel paragrafo dedicato
all'ambiente Manage Scenarios);
92
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Come inserire e comporre nell'ambiente Option Map le Standard Option o le Strip of
Options
Molte delle opzioni tipiche, più conosciute, diffuse o note, possono essere modellate con Fairmat. Il
blocco delle Standard Options, ovvero delle opzioni di tipo standard, è la base del blocco
costruttore dell'ambiente Option Map e, utilizzandolo, è possibile modellare moltissime opzioni
stile Europeo, Americano o Asiatico.
Gli altri tipi di opzioni, quali ad esempio i pagamenti ricorrenti o le opzioni ricorrenti, possono
invece essere modellati utilizzando il blocco costruttore Strip of Options.
Per inserire un'opzione in Fairmat dobbiamo cliccare, sulla tavolozza grafica della Option Map
presente sotto il menù principale, l'oggetto che si vuole creare, trascinarlo e lasciarlo cadere nella
schermata grafica dell'ambiente Option Map.
Le Standard Options
Una Standard Option è generalmente caratterizzata da:
– un payoff, il quale dipende dal valore delle variabili di stato; e
– una data di esercizio, o più date d'esercizio (“Excercise Date/s”), la quale indica il tempo
della data della decisione, che viene definita dalle caratteristiche dell'investimento. In tal
senso, a proposito della data di esercizio di un'opzione, distinguiamo in genere fra opzioni di
tipo Americano, le quali possono essere esercitate in un qualunque momento intercorrente
fra la Start Date e la End Date, o Maturity Date, e opzioni di tipo Europeo, le quali possono
essere esercitate solo a scadenza e quindi solo in corrispondenza della End Date;
Dopo aver selezionato, nell'ambiente Option Map, una Standard Option, facendo doppio click
sull'oggetto creato, apriremo una finestra con tre tab: General, Timing and Payoff e Custom
Discounting (figura 3.53).
(Figura 3.53: Creazione di una Single Option, tabs della finestra di editing)
93
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Il tab General (riquadro di sinistra della figura 3.53) ci permette di valorizzare i seguenti campi:
– “Description” (Descrizione): nel quale possiamo inserire informazioni utili di tipo
descrittivo. Dopo aver chiuso la finestra di editing ciò che è contenuto nel campo
“Description” verrà visualizzato in basso a destra dell'opzione creata nell'ambiente Option
Map;
– “Name” (Nome): nel quale possiamo attribuire un nome univoco (e senza spazi) all'opzione
creata nell'ambiente Option Map. Per attivare tale attributo dobbiamo flaggare il relativo
check-box;
– “Type” (Tipo): col quale possiamo selezionare il tipo dell'opzione scegliendo fra le seguenti
possibilità (figure 3.54 e 3.55): Custom or Committed Option (European), Standard
European o American Type Option;
(Figura 3.54: Creazione di una Single Option, Scelta del “Type” - 1)
(Figura 3.55: Creazione di una Single Option, Scelta del “Type” - 2)
Per quanto riguarda il tab Timing and Payoff (riquadro di destra della figura 3.53), invece:
A) Nel caso in cui l'opzione creata attraverso il tab General sia del tipo American type option,
si attiverà il menù a tendina “American timing type”, il quale ci permetterà di compiere una
fra le seguenti scelte possibili (zona contrassegnata dalla lettera A nel riquadro di destra
della figura 3.53 e figura 3.56):
– “Continuos”: qualora sia previsto che l'esercizio dell'opzione possa avvenire in qualsiasi
momento fra la Start Date e la End Date. In questo caso dovremo soltanto specificare la
End Date, o Maturity, in quanto la Start Date sarà automaticamente supposta uguale a 0;
– “Bermudan” (Uniform Steps): qualora sia previsto che l'esercizio dell'opzione possa
avvenire in corrispondenza di specifiche date, dette anche “step dates”, e definite da un
apposito “exercise step”, fra la Start Date (supposta anche in questo caso uguale a 0) e la
End Date;
– “Bermudan Date's Vector Reference”: qualora sia previsto che l'esercizio dell'opzione
possa avvenire in corrispondenza di specifiche date definite da un apposito “exercise
date's reference vector”;
– “Inherited (from another option's exercise)”: qualora si voglia, per l'opzione creata,
ereditare da un'altra opzione la relativa politica di esercizio attraverso un'apposita
94
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
“Master Option”;
(Figura 3.56: Creazione di una Single Option, tab “Timing and Payoff”)
B) Nel caso in cui l'opzione creata attraverso il tab General sia di tipo European Standard
oppure di tipo Custom o Committed (European), si attiverà il solo campo “Continuos” il
quale ci permetterà di specificare la End Date dell'opzione stessa (zona contrassegnata dalla
lettera B nel riquadro di destra della figura 3.53);
C) Il gruppo di box “Relative Time” include, fra gli altri, il check-box relativo al campo
“Timing relative to exercise of option” e un menù a cascata conseguente. Ciò serve a
specificare l'opzione cui il tempo di esercizio si riferisce (zona contrassegnata dalla lettera C
nel riquadro di destra della figura 3.53);
D) E' possibile poi flaggare il check-box “Export Payoff”, attivando la relativa funzionalità
(zona contrassegnata dalla lettera D nel riquadro di destra della figura 3.53);
E) E' possibile, infine, valorizzare il check-box “Payoff Expression” per poter inserire i
payoff dell'opzione creata nell'ambiente Option Map (zona contrassegnata dalla lettera E nel
riquadro di destra della figura 3.53);
Un esempio sulle Standard Options
Consideriamo un'espressione per i payoff data da Max(V1-3%; 0%) uguale a V1-3%. Questo è il
payoff di un'opzione di tipo call scritta su un sottostante descritto attraverso il processo stocastico
V1 e con uno strike rate pari al 3%. A seconda del momento nel quale tale opzione dovrà essere
valutata e a seconda del tipo dell'opzione stessa, nei tab General e Timing and Payoff dovremo
compiere delle scelte ben precise; in particolare:
– se l'opzione è di tipo Americano e dovrà essere valutata in un qualsiasi istante di tempo fra
la Start Date e la End Date, nel tab General dovremo valorizzare il campo “Type”
(selezionando la voce “American type option”) mentre nel tab Timing and Payoff dovremo
valorizzare il campo “American timing type” (selezionando la voce “Bermudan date's vector
reference”);
– se l'opzione è d tipo Standard European o Custom o Committed e dovrà essere valutata ad
una specifica data d'esercizio, ovvero alla sua scadenza, nel tab General dovremo
valorizzare il campo “Type” (selezionando la voce “Custom or Committed European” o la
voce “Standard European”, a seconda dei casi), mentre nel tab Timing and Payoff dovremo
valorizzare il campo “Continuos” (specificandovi soltanto la End Date, o Maturity Date). In
quest'ultimo caso il payoff sarà semplicemente pari a V1-3% con esercizio in corrispondenza
della End Date;
Le Strip of Options
95
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Oltre che le Single Standard Options, Fairmat ci permette anche di inserire un'intera strip (serie) di
opzioni attraverso il blocco Strip of Options. Tale blocco ci permette di modellare una serie di
opzioni composte. La serie di opzioni (e dei relativi pagamenti) viene parametrizzata sia nella voce
“Exercise Date” che nella voce “Payoff”.
Utilizzando un ambiente apposito, possiamo creare facilmente una sequenza composta da molte
opzioni o da molti pagamenti. Fairmat crea una serie di opzioni sostituendo al simbolo incognito # i
valori attuali dei cicli di iterazione presi dai campi “From”, “Step” e “To” presenti nel tab Timing
and Payoff (figura 3.58).
Così come avviene nel caso della creazione di Single Standard Options, dopo aver selezionato una
Strip of Options, facendo doppio click sull'oggetto creato nell'ambiente Option Map, si aprirà una
finestra con due tab: General e Timing and Payoff (figure 3.57 e 3.58).
Il tab General (figura 3.57) ci permette di valorizzare i seguenti campi:
– “Name” (Nome): nel quale possiamo attribuire un nome univoco (e senza spazi) all'opzione
creata nell'ambiente Option Map. Per attivare tale attributo dobbiamo flaggare il relativo
check-box;
– “Description” (Descrizione): nel quale possiamo inserire altre informazioni utili di tipo
descrittivo. Dopo aver chiuso la finestra di editing ciò che è contenuto in questo campo verrà
visualizzato in basso a destra dell'opzione creata nell'ambiente Option Map;
– “ID”: nel quale possiamo inserire un codice in grado di identificare univocamente l'opzione;
– “Type” (Tipo): il quale è una combinazione di box attraverso cui possiamo scegliere il tipo
di opzione. Le scelte possibili in tal senso sono: Standard European Option o Committed
Option. Di default il tipo di opzione impostato è Custom, o Committed Option;
– “Strip Type” (Tipo di strip): con il quale possiamo definire il tipo di collegamento fra le
operazioni comprese nella Strip of Options. L'utente può scegliere fra due alternative:
“Sequence Compound Option” o “Sum of Independent Options”;
(Figura 3.57: Creazione di una Strip of Options, tab General)
Il tab Timing and Payoff (figura 3.58 ci permette, invece, di valorizzare i seguenti campi:
– “From” (Da), “Step” (Passo), “To” (A): parametri che servono a definire i valori “Start”,
96
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
“Step” e “End” dei cicli di iterazione (ad esempio, ponendo i parametri nel seguente modo:
“From” = 2, “Step” = 1 e “To” = 6, richiederemo al simbolo incognito # di assumere nel
corso dei vari cicli di iterazione i valori 2, 3, 4, 5 e 6. Ponendo, invece, i parametri nel
seguente modo: “From” = 2, “Step” = 2 e “To” = 6, richiederemo al simbolo incognito # di
assumere nel corso dei vari cicli di iterazione i valori 2, 4 e 6). Premendo il tasto “View”
possiamo visualizzare in dettaglio i parametri “Date Expression” e “Payoff Expression”
collegati con i valori assunti dal simbolo incognito # durante lo svolgimento delle varie
iterazioni in modo da poter, utilmente, verificare se gli input che abbiamo inserito per i
payoff di un'opzione siano corretti o meno;
– “Parametric Exercise Date (#)”: con il quale possiamo definire le date di esercizio delle
opzioni comprese, appartenenti, alla strip (ad esempio, il parametro Pd[#] significa che le
date di pagamento, le “payment dates”, del Vector Date, Pd, sono definite dai parametri
inseriti nei campi “From”, “Step” e “To”);
– “Parametric Payoff (#)”: nel quale possiamo inserire i payoff delle opzioni;
– “Callability (Redimibilità)”: nel quale possiamo inserire maggiori informazioni riguardo alla
callability dell'opzione, e quindi informazioni inerenti alla possibilità che la stessa possa
essere rimborsata, o estinta, prima della sua naturale scadenza e quindi in via anticipata, le
quali sono visibili nella relativa sottosezione.
Un menù a tendina, presente all'interno di questo campo, ci permetterà di scegliere fra tre
possibilità:
1) “No Callability” (Nessun rimborso od estinzione anticipata): scegliendo questa alternativa
non poniamo alcuna possibilità di uscita preventiva dal contratto;
2) “Callability” (Redimibilità possibile in quanto prevista): scegliendo questa alternativa
poniamo una possibilità di uscita preventiva dal contratto coincidente con una delle date
impostate nel campo “Parametric Payoff (#)”;
3) “Callability with different exit payoff” (Redimibilità con un differente payoff d'uscita):
scegliendo questa alternativa poniamo una possibilità di uscita preventiva dal contratto
coincidente con una delle date impostate attraverso il parametro “Parametric Alternative
Payoff (#)”;
(Figura 3.58: Creazione di una Strip of Options, tab “Timing and Payoff”)
Vedermo ora tre esempi su come creare e gestire, attraverso Fairmat, delle Strip of Options e su
97
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
come gestire la relativa clausola di callability, laddove eventualmente prevista.
I primi due esempi hanno carattere del tutto generale; il terzo esempio ha un taglio più specifico e
costituirà anche un modo assai utile per rivedere e ripassare tutte le funzionalità e le caratteristiche
di Fairmat che abbiamo finora trattato in modo da fissarne meglio i relativi concetti.
Un esempio di Strip of Options (1): Opzioni senza clausola di callability
Supponiamo di detenere un coupon bond che prevede il pagamento, fra le “payment dates”
comprese fra il tempo 5 e il tempo 9 (estremi dell'intervallo inclusi) una cedola aggiustata per le
date's metric conventions ed impostata sulla base delle date relative ai vettori CVG[] (vettore delle
date aggiustate) e N[] (vettore dei valori nozionali). La figura di riferimento è la 3.59.
Il simbolo incognito # assumerà quindi i valori 5, 6, 7, 8 e 9 per ciascuna opzione appartente alla
Strip.
Nel caso esaminato con questo esempio numero 1, i parametri e i relativi valori saranno quelli
riassunti nella tabella 3.2:
(Tabella 3.2 – Esempio 1, Definizione parametri e valori)
Parametro
From
Step
To
Parametric Payoff (#)
Parametric Exercise Date
Valore
5
1
9
coupon[#]*Cvg[#]*N[#]
Pd[#]
(Figura 3.59: Esempio 1 – Definizione dei payoff)
98
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Un esempio di Strip of Options (2): Opzioni con clausola di callability (esempio generico)
Possiamo anche attivare un callability flag direttamente per ciascuna delle opzioni incluse nella
Strip (figura 3.60). A proposito della clausola di Callability vedremo due esempi: uno generico,
ossia l'esempio numero 2 – proposto in questo paragrafo –, l'altro più specifico che verrà riportato
immediatamente dopo).
Nel caso dell'esempio numero 2 il callability flag rappresenta la caratteristica di callability (ovvero
di redimibilità) della Strip of Options nel suo complesso.
Il menù a tendina accanto alla voce “Callability” del tab Timing and Payoff ci permette di regolare
la possibilità (per un ente emittente) di chiudere anticipatamente, estinguendolo, il contratto
(possibilità in genere esercitabile dopo però un determinato periodo di tempo, detto anche di lockout, durante il quale la stessa possibilità resta preclusa).
Come abbiamo già visto in precedenza, dal menù a tendina “Callability” sono selezionabili tre voci
distinte che sono le seguenti:
– “No Callability”: scelta con la quale escludiamo qualunque possibilità per l'emittente di un
richiamo anticipato;
– “Callability”: scelta con la quale attiviamo la previsione di un'uscita anticipata, rispetto alla
scadenza, dal contratto, la quale coinciderà (nel caso della scelta specifica in questione) con
una delle date impostate nel campo “Parametric Payoff (#)”;
– “Callability with different exit payoff”: scelta con la quale attiviamo la previsione di
un'uscita anticipata, rispetto alla scadenza, dal contratto, la quale coinciderà (nel caso della
scelta specifica in questione) con una delle date impostate attraverso il parametro
denominato “Parametric Alternative Payoff (#) (figura 3.60);
Riprendiamo il coupon bond che abbiamo visto con l'esempio numero 1. Come detto, tale bond
paga, fra le “payment dates” comprese fra il tempo 5 e il tempo 9 (estremi inclusi) o una cedola o
una coupon call, nel caso in cui venga esercitato il diritto di callability da parte dell'emittente.
Nel caso esaminato con questo esempio numero 2, i parametri e i relativi valori saranno quelli
riassunti nella tabella 3.3:
(Tabella 3.3 – Esempio 2, Definizione parametri e valori)
Parametro
From
Step
To
Parametric Payoff (#)
Parametric Alternative Payoff ( #)
Parametric Exercise Date (#)
Valore
5
1
9
Coupon[#]*Cvg[#]*N[#]
Payoff nel caso di non esercizio del diritto di callability
(CouponCall[#]*Cvg[#]*N)+N Payoff nel caso di esercizio del diritto di callability
Pd[#]
Notiamo che nel caso in cui il diritto di callability venga esercitato, il valore dell'opzione
successiva, all'interno della Strip, sarà pari a 0.
99
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.60: Esempio 2 – Definizione dei payoff)
Un esempio di Strip di Opzioni (3): Opzioni con clausola di callability (esempio specifico)
Abbiamo già accennato più volte, in precedenza, che la clausola di callability (o di redimibilità) di
un'attività finanziaria consente all'emittente della stessa di redimerla, ovvero di rimborsarla ad una
certa data antecedente rispetto a quella fissata per la scadenza richiamandola oppure imponendo al
possessore del relativo titolo di rivenderlo.
Normalmente è previsto comunque un periodo cosiddetto di lock-out, ovvero un periodo (della
durata di qualche anno in genere) durante il quale l'opzione redimibile non può essere esigibile o
richiamabile per l'emittente; in altre parole, un periodo di blocco durante il quale l'emittente non
può esercitare la clausola di redimibilità né può richiamare in via anticipata l'attività emessa.
Ipotizziamo ora di trattare un semplice coupon bond fixed-floating (ovvero fisso contro variabile) il
quale prevede un tasso cedolare fisso per il primo anno, un tasso variabile dal secondo anno fino
alla scadenza naturale del titolo e che abbia incorporata una clausola di callability.
Con la tabella 3.4 riassumiamo i dati fondamentali del problema in esame:
• Principal (Capitale): 1.000,00;
• Trade Date (Data di negoziazione): 13/10/2010;
• Effective Date (Data inizio): 29/10/2010;
• Termination Date (Data di scadenza): 29/10/2020;
• Leg A frequency of payments (frequenza dei pagamenti della parte A): -;
• Leg B frequency of payments (frequenza dei pagamenti della parte B): Semestrale;
100
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Tabella 3.4 – Esempio 3, Definizione parametri e valori)
Scambi
Primo anno
Dal secondo anno in poi
Alla scadenza
Lock period
=
1 anno
Convenzioni
Drivers rates reset
Day Count Conventions
Parte A
Parte B
6,00%
Max[2%; (Eur6M+125bps)] *
1000 (Principal)
*
* Titolo riscattabile dall'emittente un anno dopo la data di
regolamento (esclusa) e dopo di che con frequenza
semestrale.
Si noti che il pagamento del valore di rimborso avviene o
contestualmente alla data dell'estinzione anticipata (se ciò
accade) o alla scadenza (ossia alla Termination Date).
Parte A
Parte B
Advance, 2 days
30/360, Unadjusted
Il file in versione .fair di questo esempio è disponibile e scaricabile direttamente dal sito web di
Fairmat (www.fairmat.com).
La rilevazione del tasso Euribor a 6 mesi (Eur6M), dal secondo anno in poi, avviene, in particolare,
due giorni prima dell'inizio del periodo di maturazione degli interessi (pertanto la fixing convention
per il computo delle date di reset e di tipo Advance).
Nel dettaglio, durante il primo anno il tasso cedolare è fisso ed è uguale al 6%. Dal secondo anno in
poi il tasso cedolare è, tuttavia, variabile ed indicizzato al tasso Euribor a 6 mesi, più uno Spread
dell'1,25%, con un tasso minimo garantito del 2%.
La frequenza dei pagamenti è semestrale.
Dal secondo anno in poi, l'emittente del bond può richiamarlo, riacquistandolo ad un prezzo
predeterminato, generalmente pari al valore nominale, in corrispondenza di ciascuna “payment
date”. Il possessore del titolo ha quindi venduto all'emittente un'opzione call con strike price pari al
prezzo predeterminato. Questo diritto, generalmente, non può essere esercitato durante i primissimi
anni di vita del titolo (periodo di lock-out period, o periodo di blocco). Il premio relativo all'opzione
redimibile (o callable option) si riflette in un minor prezzo per il bond o, in maniera equivalente, in
un maggior tasso di rendimento rispetto a quello riconosciuto su un titolo avente caratteristiche
simili ma privo di clausola di callability.
Nella tabella 3.5 riproponiamo lo stesso quadro riassuntivo proposto in precedenza con la tabella
3.4, in termini però diversi, ovvero in termini parametrici e quindi utilizzando gli oggetti disponibili
nell'ambiente Parameters & Functions.
• Principal (Capitale): N;
• Trade Date (Data di negoziazione): Valuation Date (Data di valutazione);
• Effective Date (Data inizio): Effective Date (Data inizio);
• Termination Date (Data di scadenza): Pda[end];
• Leg A frequency of payments (frequenza dei pagamenti della parte A): -;
• Leg B frequency of payments (frequenza dei pagamenti della parte B): Matfl;
101
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Tabella 3.5 – Esempio 3, Definizione parametri e valori)
Scambi
Primo anno
Dal secondo anno in poi
Alla scadenza
Lock period
=
1 anno
Convenzioni
Drivers rates reset
Day Count Conventions
Parte A
-
Parte B
Fix
Max[K; (EuriborMatfl+Spd/1000)]
Funzione Float CN
*
1000 (Principal)
*
* Titolo riscattabile dall'emittente un anno dopo la data di
regolamento (esclusa) e dopo di che con frequenza
semestrale.
Si noti che il pagamento del valore di rimborso avviene o
contestualmente alla data dell'estinzione anticipata (se ciò
accade) o alla scadenza (ossia alla Termination Date).
Parte A
Parte B
Reset Type: Advance;
Add/Sub Days: Rday
Cvg
Vedremo ora come procedure dal punto di vista operativo in Fairmat.
Nel dettaglio: prima di tutto dovremo aprire un nuovo progetto.
Selezionando poi il percorso Settings → Project Preferences → Tab Simulation Dates and
Conventions dobbiamo specificare la Valuation Date e la Effective Date, che come possiamo
evincere dalle tabelle 3.4 e 3.5, corrispondono rispettivamente alla Trade Date e alla Effective Date
del contratto.
Dopo di che dobbiamo entrare nell'ambiente Parameters & Functions nel quale andremo ad inserire
tutti gli oggetti necessari per la modellazione del contratto, che nel dettaglio sono quelli elencati con
la tabella 3.6 riportata nella pagina successiva (gli oggetti elencati sono ordinati in base al loro
“Type” ovvero sia in base al loro tipo).
(Figura 3.61: Esempio 3 – Riepilogo oggetti inseriti nell'ambiente Parameters & Fucntions)
102
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Tabella 3.6 – Esempio 3, Descrizione analitica oggetti ambiente Parameters & Functions)
Nome
N
Tipo
Scalar
LO Period
Scalar
Matfl
Scalar
Rday
Scalar
Fix
Scalar
K
Scalar
Spd
Scalar
Float CN
Analytic Function
Pdu
Date Sequence
Pda
Date Vector Adjustment
Rd
Date Vector Adjustment
Cvg
Date Vector Differences
Calculator
Zr Disc
Interpolated Function
Categoria
Descrizione
Parameters Ammontare del nozionale del derivato.
Numero di periodi di lock-out, durante i
Parameters quali l'emittente non può esercitare il diritto
di callability.
Scadenza del tasso variabile espressa in
Parameters frazioni d'anno (0,5 equivale, quindi, a sei
mesi).
Numero di giorni da togliere alle reset
Parameters
dates.
Tasso cedolare fisso, valido durante il
Parameters
lock-out period.
Floor Strike Price (prezzo minimo
Parameters d'eserczio). Si utilizza nella funzione definita
dall'utente Float CN.
Spread aggiunto al tasso variabile espresso
Parameters in punti base. Si utilizza nella funzione
definita dall'utente Float CN.
Funzione definita dall'utente che esprime i
payoff corrisposti dall'emittente al
detentore del titolo. Se il tasso variabile è
Parameters inferiore al tasso K, l'emittente pagherà
almeno il tasso K, altrimenti pagherà il
tasso variabile più uno spread (Spd). Max
è una funzione incorporata.
Vettore delle date di pagamento
Parameters
unadjusted (non aggiustate).
Vettore delle date di pagamento (ottenuto
a partire dal vettore Pdu) e aggiustate per
Parameters
la Modified Following Date Rolling
Convention.
Trasformazione del vettore delle date
(Date's Vector Transformation) ottenuta a
partire dal vettore Pdu utilizzando l'oggetto
Parameters
Rday e selezionando la Date Rolling
Convention Preceding. Il reset type da
impostare è Advance.
Date's Vector Differences Transformation
ottenuta a partire dal vettore Pdu
selezionando l'oggetto Thirty 360 nel menù
Parameters
a tendina Day Count Conventions e
l'oggetto Unadjusted nel menù a tendina
Date Rolling Convention.
Parameters Curva di sconto.
103
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Una volta completato l'inserimento di tutti gli oggetti necessari nell'ambiente Parameters &
Functions (figura 3.61), dobbiamo definire il processo stocastico sottostante attivando così
l'ambiente Stochastic Processes. Con il comando “Add S. Process” possiamo inserire un modello
stocastico fra quelli disponibili e presenti nella lista. La lista dei modelli stocastici disponibili può
essere, tuttavia, estesa mediante dei plug-ins.
Una volta inserito il processo stocastico, dovremo aprire la finestra di editing e selezionare il tab
Data Source al fine di attivare il data link - nello specifico dovremo valorizzare il campo “Binding
Type” e selezionare la voce “Bind Project to specific data - e, quindi, il mercato di riferimento - per
cui, in altre parole, dovremo valorizzare il campo “Market” - e gli strumenti sui quali la calibrazione
verrà eseguita - valorizzando, infine, il campo “Calibration Strategy” (riquadro di sinistra della
figura 3.62).
Nell'esempio specifico in questione utilizzeremo un ben noto e diffuso modello per la
determinazione dei tassi di interesse a breve, ovvero sia il modello Hull&White 1 (ad un parametro)
e la calibrazione verrà eseguita utilizzando come riferimento swapoptions di tipo europeo.
(Figura 3.62: Esempio 3 – Definizione processo stocastico sottostante)
Dopo aver chiuso la finestra di editing, bisognerà premere il tasto destro del mouse per aprire il
menù a tendina relativo alla calibrazione e selezionare la voce “Calibrate model using data
provider” (riquadro di destra della figura 3.62)
Per quanto attiene alla scelta del market data provider, si deve selezionare il seguente percorso
Settings → Fairmat Preferences → Tab Core Preferences → Tab General → Menù a tendina
Market Data Provider.
104
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Una volta definito il processo stocastico sottostante, il passo successivo sarà quello di impostare il
modello di discounting più opportuno. In questo caso dovremo utilizzare un processo stocastico per
il quale si deve definire un modello di discounting riferito al processo stocastico medesimo (@V1 –
riquadro di sinistra della figura 3.63).
(Figura 3.63: Esempio 3 – Impostazione del modello di Discounting)
In aggiunta, dovremo poi definire lo stile di simulazione e il numero di percorsi della Simulazione
Monte Carlo (riquadro di destra della figura 3.63). Queste impostazioni vengono specificate
selezionando il seguente percorso: Settings → Numerical Settings e valorizzando i campi “# of
discrete time steps” e “# of simulated paths” (per esempio, se 2000 è il numero dei giorni di
calendario intercorrenti fra la Simulation Date e la Termination Date, allora 10000 potrebbe essere
il numero dei percorsi simulati; per cui, in definitiva si avrà che “# of discrete time steps” = 2000 e
“# of simulated paths” = 10000);
105
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
A questo punto siamo pronti per la modellazione del contratto nell'ambiente Option Map. Dalla
tavolozza grafica della Option Map, con un semplice drag&drop (letteralmente, “prendi e lascia”),
dovremo inserire due Strip of Options e, infine, una Single Option (figura 3.64).
In particolare, la prima Strip of Options si riferisce al periodo di lock-out, durante il quale
l'obbligazione paga un tasso cedolare fisso; la seconda Strip of Options si riferisce ai semestri
successivi, durante i quali l'obbligazione paga un tasso cedolare variabile e l'emittente potrebbe
riscattare il titolo in corrispondenza di una qualunque “payment date”; l'ultima Single Option, che è
di tipo Standard, include sia il pagamento dell'ultima cedola prevista che il rimborso finale del
capitale, il quale avviene appunto alla scadenza.
(Figura 3.64: Esempio 3 – Modellazione contratto nell'ambiente Option Map)
Al fine di sfruttare le caratteristiche di callability, dovremmo inserire i payoff rispettando il punto di
vista del possessore dell'opzione (ovvero sia il punto di vista dell'acquirente della callability option
e quindi dell'emittente dell'obbligazione, nel caso specifico in esame). Ma siamo interessati
maggiormente ad una valutazione dal punto di vista del possessore del bond (che nel caso specifico
preso in esame è anche il venditore della callability option) e quindi il punto di vista di colui che lo
ha sottoscritto e acquistato.
A tal fine utilizziamo il Functional Operator - del quale al momento facciamo solo un accenno ma
che vedremo nel dettaglio nei paragrafi successivi dedicati agli Operators disponibili in Fairmat ponendolo prima di tutti gli altri oggetti delineati in precedenza (figura 3.64).
Con la figura 3.67 proponiamo il dettaglio relativo la funzione definita Float CN, creata
nell'ambiente Parameters & Functions come y=f(x1) - dove x1 è la variabile indipendente e y è il
risultato della funzione - e richiamata nell'ambiente Option Map o, meglio, nella finestra di editing
della Strip of Options.
x1, in particolare, è una variabile di tipo Scalar e, in quanto tale, può essere o la componente di un
vettore (quale ad esempio Rd[end]), o il risultato di una funzione incorporata (quale, ad esempio, la
funzione RATE, utilizzata in questo esempio specifico per la determinazione del tasso cedolare) o
una semplice costante (quale, ad esempio, è Matfl che è una variabile di input per la funzione RATE,
appena accenata). K e Spd sono anche essi Scalar e come tali possono essere invocati direttamente
nella finestra di editing della funzione.
Possiamo definire la funzione Float CN come una funzione di tre variabili indipendenti (y=f(x1, x2,
x3) = max(x2; x1+x3/1000)) richiamandola nell'ambiente Option Map, nella finestra di editing della
Strip of Options, come Float CN(Rate(Rd[end]; Matfl; @V1); K; Spd).
Con la figura 3.66 mostriamo la finestra di editing della Strip of Options relativa al periodo durante
il quale l'obbligazione paga un tasso variabile e l'emittente può esercitare il diritto di callability.
106
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Partendo dal 3° semestre (e quindi scrivendo nel campo “From” LOper+1, dove LOper assume
valore 2 poiché il lock-out period nel caso specifico in esame copre un periodo della durata di due
semestri) fino ad arrivare al 19° Semestre (e quindi scrivendo nel campo “To” Lenght(@Pda) – 1,
dove Lenght(@Pda) assume valore pari a 20) l'emittente paga il tasso Float CN (ossia il tasso
Euribor a 6 mesi maggiorato di uno spread dell'1,25% con un tasso minimo garantito del 2%)
moltiplicato per Cvg, ovvero il periodo di riferimento, coperto dal tasso.
(Figura 3.65: Esempio 3 – Inserimento operatore Functional e definizione ValSide)
(Figura 3.66: Esempio 3 – Definizione payoff durante il periodo di esercitabilità del diritto di callability)
(Figura 3.67: Esempio 3 – Definizione Analytic Function FLOATCN)
107
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Teniamo presente che, semplificando, nel caso specificato preso in esame:
x1 → Tasso Euribor a sei mesi, incognita del modello;
x2 → tasso variabile minimo → K;
x3 → Spread applicato al tasso Euribor a sei mesi → Spd
La possibilità relativa all'estinzione anticipata del contratto viene abilitata attraverso il menù a
tendina Callability, del quale ne abbiamo già parlato in precedenza descrivendone le scelte possibili:
– “No Callability”: per cui la caratteristica di callability resta disabilita. Questa è
l'impostazione di default;
– “Callability”: per cui la caratteristica di callability viene abilitata. Nel caso in cui la
condizione di uscita occorra alla i-esima data, il contratto prevederà il pagamento dell'iesimo payoff;
– “Callability with different exit payoff”: per cui la caratteristica di callability viene abilitata.
Nel caso in cui la condizione di uscita occorra alla i-esima data, il contratto prevederà il
pagamento di un payoff alternativo, il cui valore viene specificato nel campo “Parametric
Alternative Payoff (#)”;
Quando attiviamo la caratteristica di callability, una volta chiusa la finestra di editing, sopra a destra
dell'opzione appena creata nell'ambiente Option Map apparirà una C di colore rosso, proprio per
segnalare la presenza di tale caratteristica per l'opzione in questione (figura 3.64).
108
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Gli Operators dell'ambiente Option Map: come inserirli ed utilizzarli
Gli Operators che possiamo utilizzare in Fairmat sono i seguenti:
•
Functional Operator;
•
Decisional Operator;
•
AND Operator;
•
OR Operator;
Altri Operators sono disponibili con l'installazione di appositi plug-ins.
Il Functional Operator
Il Functional Operator (figura 3.68) serve per modellare una decisione relativa ad un dato istante
(decisione modellata come il risultato della valutazione di una funzione) o per modellare una
trasformazione dei flussi di cassa generati da una sequenza di nodes nell'ambito di una struttura
decisionale.
Il Functional Operator ci permette di fare operazioni sui valori dei child nodes di una struttura
decisionale (ai quali faremo riferimento con le variabili x1, x2, …, xn).
(Figura 3.68: Functional Operator)
Facendo doppio click sull'Operator creato nell'ambiente Option Map si aprirà la finestra di editing
relativa allo stesso (figura 3.69).
Nella finestra di editing possiamo fornire una breve descrizione formale relativa all'Operator creato
e darne un nome. Nell'esempio illustrato con la figura 3.69, in particolare, i child nodes successivi
al Functional Operator sono A e B, mostrati rispettivamente con le nomenclature x 1 e x2. Nel caso
specifico, i nodes portano avanti, in particolare, delle differenze fra A e B.
109
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.69: Functional Operator – Finestra di editing)
Il Decisional Operator
Il Decisional Operator (figura 3.70) ci consente di inserire delle condizioni sulle opzioni di scelta,
quindi dei costrutti di selezione lungo la struttura decisionale.
(Figura 3.70: Decisional Operator)
Facendo doppio click sull'Operator creato nella Option Map si aprirà la finestra di editing relativa
allo stesso (figura 3.71).
Una volta aperta la finestra di editing, dovremo fare doppio click sulla voce If[ ], per poter inserire
il costrutto di selezione, ovvero la condizione legata alla If, e poi doppio click sulla voce “Select”,
in modo da selezionare o l'opzione A o l'opzione B attraverso un apposito menù a tendina.
Si noti che affinché questo Operator abbia un senso da un punto di vista logico, esso necessita di
almeno due “leaf” (ovvero di almeno due foglie, letteralmente, della struttura decisionale) e quindi
110
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
di almeno due possibilità, due nodes, fra le quali scegliere per la prosecuzione all'interno della
struttura decisionale.
(Figura 3.71: Decisional Operator – Finestra di editing)
L'AND Operator
L'AND Operator (figura 3.72) esprime la possibilità di esercitare due o più opzioni non
esclusivamente reciproche fra loro.
Tale Operator ci permette di calcolare la somma di opzioni fra loro indipendenti.
(Figura 3.72: AND Operator)
111
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
L'OR Operator
L'OR Operator (figure 3.73 e 3.74) seleziona la migliore successione di nodes utilizzando varie
metriche di riferimento (ad esempio o massimizzando, oppure minimizzando, il valore di una
successione di nodes).
L'OR Operator ci permette di calcolare il massimo valore all'interno di una serie di Strip of Options
(esclusive fra loro), o di impegni di pagamento, e ne sceglie la migliore.
L'Operator in questione modella la seguente situazione: il decision maker esercita la miglior Strip
of Options e attendendo fino al momento in cui le stesse opzioni saranno esercitabili.
Il decision maker ha anche la possibilità della scelta di non esercitare nessuna delle opzioni
appartenenti alla successione restituendo un valore di ritorno pari a 0. Quest'ultima caratteristica
dell'Operator può essere disabilitata flaggando il check-box accanto alla voce relativa alla
funzionalità “Exercise at least one of the subsequent nodes” detta anche “Excluding not-exercising
option”. In questo caso il decision maker sarà obbligato a scegliere almeno una delle Strip of
Options, o di impegni di pagamento.
In altre parole: l'OR Operator si comporta come un'opzione che, nella determinazione della politica
di ottimizzazione, considera anche la possibilità di non esercitare nessuna delle Strip of Options. Se,
però, viene flaggato il check-box “Exercise at least one of the subsequent nodes”, la possibilità di
non fare nessuna operazione non sussisterà.
(Figura 3.73: OR Operator)
(Figura 3.74 – OR Operator – Finestra di editing)
112
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
I Branches
Un branch (ossia un ramo – figura 3.75) è una connessione fra due o più elementi. Se due opzioni
(oppure un Operator e un'opzione) sono collegate fra loro attraverso un branch nella direzione da
sinistra verso destra, lungo la Option Map, allora l'elemento (opzione o Operator che sia) che si
trova a sinistra rappresenta la causa per l'elemento (opzione o Operator che sia) che si trova a
destra. Ciò significa che qualunque elemento che si trova, lungo la Option Map, a destra potrebbe
accedere solo dopo che l'elemento che si trova a sinistra è stato eseguito (ovvero a causa
dell'esecuzione relativa all'elemento che si trova a sinistra). In un senso ricorsivo a ritroso, implicito
nella programmazione dinamica, potremmo quindi affermare che il valore dell'elemento che si trova
a sinistra dipende dal valore dell'elemento che si trova a destra.
Prima di inserire i dati in Fairmat dobbiamo costruire la corretta Option Map del progetto
finanziario che stiamo analizzando. Questo è il punto di partenza fondamentale per affrontare al
meglio il problema della valutazione di un progetto finanziario.
(Figura 3.75: Esempio di utilizzo dei branches)
In particolare, nell'esempio riportato con la figura 3.75, l'esercizio dell'opzione Opt_1 consentirà di
poter decidere la miglior scelta possibile fra l' opzione Opt_2 e l'opzione Opt_3.
L'esercizio dell'opzione Opt_2 comporterà l'esercizio delle opzioni Opt_4 e Opt_5; il payoff che ne
deriverà sarà dato dalla media aritmetica dei payoff derivanti, appunto, dalle stesse opzioni Opt_4 e
Opt_5.D'altra parte, invece, l'esercizio dell'opzione Opt_3 comporterà, dopo un flusso di cassa
addizionale (il quale dovrà essere pagato oppure ricevuto), l'esercizio sia dell'opzione Opt_6 che
dell'opzione Opt_7.
In buona sostanza, quindi, il valore dell'opzione Opt_1 dipende sia dai suoi payoff che dai valori
delle opzioni Opt_2 e Opt_3 e avrà come componente il valore massimo generato o dall'esercizio
dell'opzione Opt_2 o dall'esercizio dell'opzione Opt_3. A sua volta, il valore dell'opzione Opt_2
dipende, oltre che dai suoi payoff, anche dai valori delle opzioni Opt_4 e Opt_5 e avrà come
componente la media dei payoff derivanti appunto dalle opzioni Opt_4 e Opt_5. Il valore
dell'opzione Opt_3, invece, dipende, oltre che dai suoi payoff, sia dall'ammontare del flusso di cassa
addizionale che dai payoff derivanti dalle opzioni Opt_6 e Opt_7, sicché essa avrà come
componente la somma dell'ammontare dei payoff derivanti appunto dalle opzioni Opt_6 e Opt_7.
113
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
L'ambiente Manage Scenarios
Fairmat ci permette di creare differenti Scenarios (scenari o configurazioni), nell'ambito del
progetto finanziario che stiamo analizzando, mediante l'utilizzo dell'apposito ambiente Manage
Scenarios (figure 3.76 e 3.77).
Dopo aver creato un form nell'ambiente Option Map, attraverso il tab Manage Scenarios possiamo
aggiungere allo scenario di default, premendo il comando “Add New”, uno o più scenari (figura
3.76). Possiamo scegliere quale configurazione utilizzare selezionandola dalla lista di gestione degli
scenari (figura 3.77).
(Figura 3.76: L'ambiente Manage Scenarios - 1)
(Figura 3.77: L'ambiente Manage Scenarios - 2)
In ciascun scenario, le seguenti proprietà delle opzioni possono assumere valori differenti:
– “Type” (American/European/Committed): in una data configurazione un'opzione potrà
essere di tipo Americano mentre in un'altra potrà essere invece di tipo Committed Decision;
– “Callability” (Redimibilità): una Strip of Options potrà avere o non avere la clausola di
callability a seconda dello scenario;
– “Enable/Disable”: un'opzione o un operatore funzionale può sussistere o meno a seconda
dello scenario;
La funzionalità Scenarios può essere utilizzata per creare uno scenario od una serie di scenari e/o
per fare un'analisi del tipo What If (“Cosa accadrebbe se …).
114
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Il Tab Info
Come già si è avuto modo di accennare all'inizio di questo capitolo, i due tab principali che si
trovano alla sinistra della schermata iniziale del programma sono i tab Structure e Info (figura 3.78).
Il tab Structure è stato già trattato nel corso dei precedenti paragrafi, per cui vedremo ora nel
dettaglio il tab Info.
(Figura 3.78: Schermata iniziale di Fairmat – il tab Info messo in evidenza)
Il tab Info contiene al suo interno due campi distinti da poter riempire:
1) il campo “Notes” (Note) nel quale è possibile aggiungere, a nostra discrezione, eventuali
informazioni aggiuntive relative al file .fair sul quale stiamo lavorando (figura 3.79);
2) “il campo “Document's plug-ins dependencies” (Dipendenze del documento dai plug-ins)
nel quale vengono segnalate le eventuali dipendenze da plug-ins del documento in
versione .fair sul quale stiamo lavorando e che, quindi, sono segnalati come mancanti e
necessari e che dovremo scaricare ed installare per il file medesimo (figura 3.79);
Fairmat include, infatti, in tutti i suoi modelli una lista di plug-ins che sono necessari per far
funzionare un qualsiasi modello stocastico sottostante. Qualora manchi uno o più plug-ins di
dipendenza e necessari per il file con estensione .fair sul quale stiamo lavorando, Fairmat
provvederà prontamente a suggerirci di installare i plug-ins necessari e quindi da installare
(nell'esempio riportato nella figura 3.79, il file .fair in corso di elaborazione necessita di quattro
plug-ins ed in particolare dei seguenti plug-ins: “Fairmat Core”, “Dates Generator”, “Fairmat Core
Extension” e “Plain Vanilla”).
Premendo il tasto “OK” verremo reindirizzati al form degli Available on-line plug-ins, ossia al form
relativo ai plug-ins disponibili on-line (figura 3.80). Alcuni file in versione .fair necessitano di un
link ad un database modello. Quest'ultima caratteristica, tuttavia, è disponibile soltanto con la
versione Professional di Fairmat.
115
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.79: Il Tab Info)
(Figura 3.80: Finestra di alert per le dipendenze dai plug-ins del documento .fair)
116
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
La Toolbar
La Toolbar (figura 3.81) ci permette di fissare le principali impostazioni ai fini dell'analisi che
intenderemo condurre.
(Figura 3.81: Toolbar)
Attraverso l'utilizzo di una serie di menù a cascata attraverso la Toolbar potremo impostare:
•
il Current Scenario (Scenario corrente, attuale) al quale l'analisi, che intenderemo condurre,
deve riferirsi;
(Figura 3.82: Toolbar – Selezione del Current Scenario)
•
il tipo di Analysis (Analisi) che intediamo condurre;
(Figura 3.83: Toolbar – Analysis)
•
il Starting Node (Nodo di partenza) a partire dal quale la Simulation (Simulazione) debba
partire;
(Figura 3.84: Toolbar – Starting Node)
117
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
L'informazione di default per identificare un node è il codice Id, un codice univoco che
identifica un oggetto (ad esempio Optio, id=1). Qualora aggiungessimo delle informazioni
nel campo “Description”, queste ultime saranno visualizzabili (ad esempio 1_year);
•
La Effective Date, ovvero sia la data a partire dalla quale il contratto inizierà o è già iniziato.
Per vedere come impostare la Effective Date in Fairmat si riveda la funzionalità Project
Preferences del tab Settings, già analizzata nel dettaglio nel corso del Capitolo 1;
•
La Simulation Date, ovvero sia la data alla quale l'analisi che intendiamo condurre fa
riferimento. Anche per quando riguarda la Simulation Date, vale quanto sopra scritto per la
Effective Date, ovvero sia che si raccomanda di rivedere la funzionalità Project Preferences
del tab Settings, già analizzata nel dettaglio nel corso del Capitolo 1;
(Figura 3.85: Toolbar – DatePicker)
(Figura 3.86: Toolbar – Lancio di un'analisi, prima possibilità)
118
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.87: Toolbar – Lancio di un'analisi, seconda possibilità)
Il comando “Run Analysis”, evidenziato nel riquadro rosso della figura 3.87, è una scorciatoia per
poter lanciare un'analisi in Fairmat. Il medesimo risultato si ottiene comunque cliccando con il tasto
destro del mouse sul comando “Analysis” (figura 3.86).
119
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Lo Status Panel e i suoi tab
Lo Status Panel (figura 3.88) si riferisce a tutti quei tab che si trovano nella parte bassa della
schermata principale.
(Figura 3.88: Status Panel)
I tab che compongono lo Status Panel sono i seguenti:
– Valuation;
– Errors;
– Parameters;
– Log;
– Fairmat Console;
Analizzeremo ora nel dettaglio, uno per uno, i tab sopra elencati.
Il Tab Valuations
Il tab Valuations visualizza, in ogni istante e seguendo, in particolare, un ordine decrescente (ovvero
partendo dall'ultima analisi effettuata, partendo dall'analisi effettuata più recentemente), le
informazioni riguardo le analisi effettuate fra cui:
– lo “Starting Node” di riferimento;
– il “Expected Value” (ossia il valore atteso del contratto oggetto di analisi o del progetto
oggetto di analisi);
– la “Standard Deviation” (o “Std. Dev.”, Deviazione Standard);
– lo “Standard Error” (o errore standard relativo all'analisi);
– il metodo di valutazione adottato (nell'esempio riportato nella figura 3.89, in particolare, la
Simulation numero 8, evidenziata dal cursore in blu, supporta la simulazione Monte Carlo);
– il “Time” della valutazione (ossia l'istante nel quale è stata effettuata l'analisi richiesta);
– lo “Scenario” di riferimento;
Nell'esempio riportato nella figura 3.88, l'analisi numero 8, evidenziata dal cursore in blu, è una
Sensitivity Analysis (Analisi di Sensibilità) sul parametro α (alfa), riferita allo “Starting Node”
IRS_KO, con lo Scenario_B come “Scenario” di riferimento e condotta utilizzando la simulazione
Monte Carlo.
Facendo doppio click sulla valutazione selezionata verremo reindirizzati ad una finestra contenente
i dettagli relativi alla valutazione stessa.
Il tab Errors
120
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Come l'etichetta stessa suggerisce, il tab Errors si riferisce ad un errore occorso durante l'utilizzo di
Fairmat. Gli avvisi di errore possono essere di tre tipi distinti (figure 3.89, 3.90 e 3.91):
1) “Error Type 1”: è un tipo di errore che ci viene segnalato durante l'editing di un file .fair e
quindi può apparire, ad esempio, qualora avessimo editato una Analytic Function utilizzando
tre variabili senza provvedere a modificare il campo “# of indipendent variables” nel
combo-box menù relativo all'editing delle funzioni. Tale tipi di errori vengono segnalati in
quanto Fairmat controlla i codici durante l'editing da parte dell'utente;
2) “Error Type 2”: è un tipo di errore che normalmente occorre qualora lanciassimo un'analisi
su un file .fair contenente un errore che deve essere necessariamente corretto prima di poter
procedere con l'esecuzione dell'analisi stessa;
3) “Error Type 3”: è un tipo di errore che viene evidenziato per segnalarci la presenza di
potenziali bug che potrebbero occorrere durante l'esecuzione del programma Fairmat.
Possiamo aggiungere un commento a tali eventuali bug, qualora occorrano, e decidere se sia
il caso o meno di inviare un report allo staff di Fairmat, facendo così una segnalazione in tal
senso. Possiamo avvisare lo staff di Fairmat attraverso il form Fairmat's Error Report
(figura 3.93) oppure postando un bug sul reporting Fairmat's Bug;
(Figura 3.89: Tab Errors, Error Type 1)
(Figura 3.90: Tab Errors, Error Type 2)
(Figura 3.91: Tab Errors, Error Type 3)
121
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.92: Fairmat's Error Report)
Il tab Parameters
Il tab Parameters (figura 3.93) fornisce informazioni derivanti dall'ambiente Parameters &
Functions. E' assai utile dare un'occhiata e verificare quali sono i parametri contenuti nell'ambiente
Parameters & Functions e, per alcune tipologie di oggetti, le funzionalità eventualmente attivate
(come ad esempio il range impostato per la Sensitivity Analysis oppure l'attivazione dell'export flag
per la Impact Analysis).
(Figura 3.93: Tab Parameters)
Dalla colonna “Par. Name”, facendo doppio click sulla riga alla quale l'oggetto selezionato fa
riferimento, possiamo accedere alla finestra di editing dell'oggetto medesimo e modificarne le
impostazioni.
Dalla colonna “Export”, facendo doppio click sulla riga alla quale l'oggetto selezionato fa
riferimento, possamo, direttamente dal tab Parameters, attivare (selezionando la voce “True”) o
disattivare (selezionando la voce “False”) l'export flag relativo all'oggetto medesimo.
122
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Il tab Log
Il tab Log (figura 3.94) fornisce informazioni riguardo ai processi software di background di
Fairmat in corso mentre lo stesso programma è in fase di esecuzione.
(Figura 3.94: Tab Log)
Nota solo per gli sviluppatori di plug-ins per Fairmat.
Tutti i metodi di programmazione di Fairmat, ovvero Console.Write e Console.Write.Line sono
reindirizzati al tab Log di Fairmat. Per ulteriori informazioni si veda la sottosezione How to Publish
Fairmat Plug-ins presente nella sezione “Developers” del sito web del programma
(www.fairmat.com).
Il Tab Fairmat Console
Il tab Fairmat Console (figura 3.95) è uno strumento che utilizza variabili e funzioni in modo
iterativo, come se fosse un calcolatore.
(Figura 3.95: Fairmat Console)
123
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Supponiamo di voler costruire un semplice contratto derivato di tipo Collar, dato da una
combinazione fra una posizione lunga su una floor otion (per cui il venditore dovrà pagare
un'eventuale payoff derivante da tale opzione di tipo put) e una posizione long su un'opzione call
(per cui l'acquirente dovrà ricevere un'eventuale payoff derivante da tale opzione di tipo call,
appunto).
La funzione fl si può esprimere come segue:
• Se X ≤ Tfloor → X + Max( Tfloor – X; 0);
• Se Tfloor < X ≤ Tcap → X;
• Se X > Tcap → X – Max(X – Tcap; 0);
Con Tfloor = 3% e Tcap = 6%.
Nella command line del tab Fairmat Console (contraddistinta con il segno >) possiamo inserire le
dichiarazioni di variabili (e quindi possiamo insrire, ad esempio, l'input della funzione fl allo scopo
di verificare che il suo comportamento sia coerente e corretto).
Nel tab Fairmat Console possiamo utilizzare le caratteristiche di auto-complete (ovvero di autocompletamento). In partcolare, mentre si stanno editando delle espressioni, premendo CTRL +
SPACE, apparirà un box di auto-complete il quale ci permetterà di visualizzare tutte le possibilità
di completamento disponibili e attraverso le quali possiamo completare più rapidamente
l'espressione che stavamo editando, o che volevamo editare.
Possiamo continuare, comunque, a scrivere, ad editare; in questo caso la lista delle “completations”
disponibili verrà aggiornata di conseguenza; oppure potremo scegliere uno fra le “completations”
suggerite dal programma mediante l'utilizzo delle frecce presenti sulla tastiera e premendo il tasto
ENTER (Invio).
124
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
Le funzionalità di auto-complete
Fairmat possiede una serie di strumenti che ci consentono di scrivere ed editare più velocemente. In
particolare:
• il testo delle espressioni note (e riconosciute dal programma) vengono colorate; di
conseguenza vedremo i simboli e le espressioni note, riconosciute, da Fairmat
contrassegnate rispettivamente con il colore arancione e con il colore rosso (mentre gli
operatori e i numeri rimangono contrassegnati con il colore nero). Inoltre, al fine di
agevolarci nella creazione delle espressioni, il programma evidenzia le coppie di parentesi
inserite (tonde, quadre, graffe);
• Le espressioni possono essere auto-completate premendo CTRL + SPACE;
• I simboli creati possono essere rinominati dall'utente in qualunque momento;
L'Autocomplete box aiuta a risparmiare tempo nell'editing delle espressioni, mostrandoci quali sono
le funzioni e i simboli definiti nel progetto e/o disponibili in Fairmat.
L'Autocomplete box funziona nel seguente modo:
• In ogni textbox di Fairmat durante l'editing delle espressioni, possiamo premere il comando
CTRL + SPACE. Questo comando ci mostrerà un form nel quale possiamo completare
l'espressione che stavamo scrivendo;
• Una volta che appare il form di autocomplete, possiamo comunque continuare a scrivere (in
questo caso la lista dei possibili completamenti conosciute dal programma verrà aggiornata)
oppure può scegliere l'oggetto di completamento desiderato e selezionarlo utilizzando il
mouse e i tasti direzionali della tastiera UP e/o DOWN. Premendo poi il tasto ENTER
sceglieremo e completeremo l'espressione che stavamo scrivendo;
• Contrariamente al caso di selezione di una variabile costante o di uno Scalar, se l'oggetto
che abbiamo selezionato è una funzione, la lista delle possibili differenti forme funzionali
apparirà sul lato destro del pannello. Le forme funzionali selezionabili possono essere scelte
utilizzando i tasti direzionali della tastiera LEFT e/o RIGHT;
• Per il simbolo selezionato viene fornito un link al sistema di aiuto, accessibile cliccando
sulla voce “More Help”. Tale link attiverà Fairmat nella ricerca del sistema di supporto per il
simbolo selezionato appunto;
Per comprendere appieno il funzionamento delle funzionalità di Autocomplete, diamo un'occhiata
all'esempio riportato nella figura 3.96. In particolare, dopo aver editato “Ma”, premendo il comando
CTRL + SPACE, Fairmat mostra un box con il quale possiamo vedere tutte le funzioni contenenti le
lettere “ma” (oppure tutti gli oggetti creati e presenti nell'ambiente Parameters & Functions
contenenti le lettere “ma”, i quali vengono contrassegnati con il colore verde).
La funzionalità di Autocomplete non è case sensitive; in altre parole non è sensibile alle differenze
tra i caratteri maiuscoli o minuscoli della tastiera. Di conseguenza, nell'esempio della figura 3.96,
risulta che a contenere le lettere “Ma” siano sia la funzione vettoriale AMax che l'oggetto MatEur.
Dando rilievo all'oggetto selezionato con il cursore a forma di freccia, verrà mostrata una breve
descrizione dell'oggetto stesso (ad esempio Amax calcola il massimo dell'espressione expr valutata
per tutti gli elementi degli vettore arr). Se l'oggetto è stato creato nell'ambiente Parameters &
Functions, la breve descrizione si sovrapporrà a quanto inserito nel campo “Description”
(Descrizione).
125
CAPITOLO 3 – IL WORK SPACE DI FAIRMAT
(Figura 3.96: La funzionalità di Autocomplete)
Il Renaming
Il comando Rename ci permette di rinominare un oggetto presente nell'ambiente Parameters &
Functions. Per procedere con il renaming è necessario, in particolare, selezionare l'oggetto da
rinominare, selezionarlo cliccando il tasto destro del mouse e premere il comando “Rename”.
La funzionalità di renaming include anche una possibilità di re-factoring (si veda in tal senso il
check-box “Change also all the occurences of this symbol in the project” - ovvero, cambiare anche
tutte le occorrenze di questo simbolo nel progetto – figura 3.97) la quale ci permette di rinominare il
simbolo in tutte le volte, in tutte le occasioni, che esso compare all'interno del progetto.
Con quanto riportato nella figura 3.97, si mostra un esempio di renaming (e di re-factoring) di una
costante il cui nome originariamente è N e che dopo il renaming viene rinominata Noz.
(Figura 3.97: Il Renaming)
126
CAPITOLO 4
LE ANALISI
E
GLI OUTPUT
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
I tipi di analisi effettuabili
Come abbiamo già avuto modo di vedere nel Capitolo 1, a proposito in particolare del Menù
Analysis, selezionando, appunto, il menù stesso Fairmat ci consente di effettuare un'analisi su un
file .fair.
Più nel dettaglio, le analisi che possiamo effettuare sono le seguenti:
– la Bivariate Sensitivity Analysis (Analisi di sensibilità effettuata congiuntamente su coppie
di parametri);
– la Univariate Sensitivity Analysis (Analisi di sensibilità univariata);
– la Dynamic and Volatility Analysis (Analisi sulla dinamica e la volatilità);
– la Impact Analysis (Analisi degli impatti), la Risk Analysis (Analisi del rischio);
– la Scenario (What if) Analysis (Analisi degli scenari possibili);
– la Valuation (Valutazione);
– la Greek Analysis (Analisi delle greche);
In particolare:
• La Bivariate Sensitivity Analysis ci permette di calcolare come varia il valore del Mark to
Market del contratto oggetto di analisi al variare di coppie di specifici parametri;
• La Univariate Sensitivity Analysis ci permette di calcolare come varia il valore del Mark to
Market del contratto oggetto di analisi al variare di uno specifico parametro alla volta;
• La Dynamic and Volatility Analysis ci permette di calcolare la dinamica di andamento del
valore del contratto oggetto di analisi e di calcolare la media delle varianze dell'evoluzione
del valore del contratto o del progetto;
• La Impact Analysis ci permette di calcolare l'impatto sul valore del Mark to Market del
contratto oggetto di analisi di una specifica variazione intervenuta contemporaneamente nel
valore di due o più parametri;
• La Risk Analysis ci permette di determinare il livello di rischio sia della distribuzione dei
futuri flussi di cassa sia del valore residuo del contratto oggetto di analisi;
• La Scenario Analysis ci permette di comparare il valore del Mark to Market del contratto
oggetto di analisi sotto differenti scenari ipotetici;
• La Valuation ci permette di calcolare il valore del Mark to Market del contratto oggetto di
analisi;
• La Greek Analysis ci permette di determinare le greche del contratto oggetto di analisi. Le
greche sono i coefficienti di sensibilità di un contratto finanziario derivato;
Nei paragrafi che seguiranno vedremo nel dettaglio la Valuation, la Risk Analysis, la Sensitivity
Analysis, la Impact Analysis, la Scenario Analysis e la Greek Analysis;
Valuation
127
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
La Valuation restituisce il Mark to Market del contratto oggetto di analisi.
Per lanciare una Valuation dobbiamo entrare nell'ambiente Option Map, selezionare un Operator,
cliccare il tasto destro del mouse e selezionare il percorso Analysis → Valuation (figura 4.1).
Prima ancora di procedere con la Valuation di un contratto dobbiamo però impostare le preferenze
selezionando il percorso Settings → Project Preferences.
Alternativamente, si può utilizzare la Toolbar posta in alto nella schermata principale (figura 4.2).
(Figura 4.1: Valuation – Primo metodo di lancio)
(Figura 4.2: Valuation – Secondo metodo di lancio)
Una volta lanciata la Valuation e terminata la sua elaborazione, il programma restituisce una riga
128
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
sotto il tab Valuations dello Status Panel posto in basso a sinistra della schermata principale nel
quale vengono mostrati – come abbiamo già avuto modo di vedere nel Capitolo 3 e più
precisamente nel paragrafo che tratta proprio lo Status Panel – i principali risultati della Valuation
stessa ovvero:
– lo Starting Node di riferimento;
– l'Expected Value (ossia il valore atteso del contratto oggetto di analisi);
– la Standard Deviation (o St. Dev., Deviazione Standard);
– lo Standard Error (o errore standard relativo all'analisi);
– il metodo di valutazione adottato (nell'esempio riportato nella figura 4.2, in particolare, la
Simulation numero 6 supporta la simulazione Monte Carlo);
– il Time della valutazione (ossia l'istante nel quale è stata effettuata l'analisi richiesta);
– lo Scenario di riferimento;
Con un doppio click con il tasto sinistro del mouse sulla riga sotto il tab Valuations, Fairmat mostra
anche un grafico con una distribuzione di probabilità (ovvero una distribuzione delle probabilità
attese – figura 4.3) e il valore attuale netto del progetto stesso (ovvero il Net Project Value o
(E)NPV o il Mark to Market nel caso specifico degli strumenti finanziari).
Nell'esempio mostrato con la figura 4.3 la parte colorata di blu della distribuzione si riferisce ai
flussi di cassa positivi, mentre la parte colorata di rosso della distribuzione si riferisce a flussi di
cassa negativi. Sotto il grafico viene mostrato un prospetto riassuntivo che fornisce i valori relativi
al valore atteso, l'errore standard e il valore atteso condizionato dal valore del Mark to Market
positivo del contratto (indicato con E[MTM|MTM>=0]) e il valore atteso condizionato dal valore
del Mark to Market negativo del contratto (indicato E[MTM|MTM<0]) in relazione alle loro
probabilità di realizzazione.
Per quanto attiene l'analisi dei percentili essa va letta, nel caso di flussi di cassa negativi, come la
probabilità di perdere più del valore atteso; nel caso, invece, di flussi di cassa positivi, essa va letta
come la probabilità (pari al 100% meno le relative probabilità) di guadagnare più del valore atteso.
Sempre nell'esempio della figura 4.3, il fair value del contratto oggetto di analisi è pari a -1.018.52
euro. Vi è una probabilità relativa del 100% - 80% = 20% di guadagnare più di 1.368,68 euro e,
dall'altro lato, vi è la stessa probabilità (ovvero il 20% di probabilità) di perdere di più di -3.396,94
euro.
(Figura 4.3: Valuation – Esempio di distribuzione di probabilità)
Qualora volessimo modificare la percentuale dell'intervallo della massa di distribuzione impostando
129
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
il nuovo valore sotto il tab Distribution si dovrà selezionare il seguente percorso (figura 4.4):
Settings → Project Preferences → Analysis Preferences → Distribution → Campo Show the
interval containing the x% of mass distribution.
(Figura 4.4: Valuation – Modifica percentuale dell'intervallo della massa di distribuzione)
Possiamo ripetere la Valuation sul contratto oggetto di analisi quante volte lo riteniamo opportuno. I
risultati delle analisi vengono mostrati da quella più recente a quella più vecchia (più precisamente,
e per migliore comprensione, la prima riga del tab Valuations dello Status Panel si riferisce
all'ultima analisi lanciata).
Spesso è utile impostare la funzione Repeated Analysis – attraverso la selezione del percorso
Settings → Repeated Analysis – la quale ci permette di implementare l'esecuzione dell'analisi sul
contratto oggetto di analisi per il numero di volte impostato mediante la selezione del percorso
Settings → Fairmat Preferences → Repeated Analysis: number of replications. In quest'ultimo caso,
Fairmat mostra sul tab Log dello Status Panel anche il valore medio e un valore per la deviazione
standard della popolazione statistica oggetto dell'analisi.
Risk Analysis
La Risk Analysis ci permette di determinare il livello di rischio sia della distribuzione dei futuri
flussi di cassa (selezionando il percorso Risk Profile → Cash Flows of the contract) sia del valore
residuo del contatto derivato oggetto di analisi (selezionando il percorso Risk Profile → Value of the
Contract) in corrispondenza delle payment dates.
Per avviare la Risk Analysis dobbiamo entrare nell'ambiente Option Map, selezionare un Operator
(OR o AND oppure una funzione quale può essere ad esempio la funzione Sum – Somma), cliccare il
tasto destro del mouse e selezionare il percorso Analysis → Risk Analysis (figura 4.5).
In alternativa, possiamo avviare la Risk Analysis utilizzando la Toolbar posta in alto nella schermata
principale (figura 4.6).
In via opzionale, possiamo poi determinare il livello di rischio dei flussi di cassa futuri e del valore
residuo del contratto oggetto di analisi riferito ad uno specifico vector date. In questo caso verranno
prese in considerazione ai fini dell'analisi solo le date posteriori a quella della valutazione.
130
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
(Figura 4.5: Risk Analysis – Primo metodo di lancio)
(Figura 4.6: Risk Analysis – Secondo metodo di lancio)
Possiamo ripetere la Risk Analysis sul contratto oggetto di analisi quante volte riteniamo opportuno.
I risultati delle analisi vengono mostrati da quella più recente a quella più vecchia.
Spesso è utile impostare la funzione Repeated Analysis – attraverso la selezione del percorso
Settings → Repeated Analysis – la quale ci permette di implementare l'esecuzione dell'analisi sul
contratto oggetto di analisi per il numero di volte impostato mediante la selezione del percorso
Settings → Fairmat Preferences → Repeated Analysis: number of replications. In quest'ultimo caso,
Fairmat mostra sul tab Log dello Status Panel anche il valore medio e un valore per la deviazione
standard della popolazione statistica oggetto dell'analisi.
131
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
(Figura 4.7: Risk Analysis – Esempio di distribuzione di probabilità 1)
(Figura 4.8: Risk Analysis – Esempio di distribuzione di probabilità 2)
Sensitivity Analysis
La Sensitivity Analysis ci permette di studiare come la variazione (incerta) nel risultato, nell'output,
di un modello matematico possa essere rapportata, da un punto di vista qualitativo o da un punto di
vista quantitativo, a differenti fonti di variazione nell'input (o negli input) del modello.
Una volta creato un file .fair i passi che dovremo seguire, compiere, per l'implementazione della
Sensitivity Analysis sono i seguenti:
1) Primo Passo (figura 4.9): selezionare nell'ambiente Parameters & Functions il parametro (o
132
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
i parametri) che dovrà variare (o che dovranno variare) durante la Sensitivity Analysis, fare
doppio click su esso (o su essi) e valorizzare i campi Expression (tramite tale valorizzazione,
in particolare, imposteremo il valore a partire dalla quale inizierà la Sensitivity Analysis) e
Range (tramite tale valorizzazione, invece, imposteremo l'intervallo entro il quale la
variabile potrà subire variazioni).
Si noti che se Range è impostato come uno Scalar, la Sensitiviy Analysis verrà condotta
sull'intervallo [Valore base – Range; Valore base + Range] dove Valore base indica il valore
attuale, corrente, del parametro; se, invece, Range è impostato come un vettore di due
elementi, espresso nella forma a1; a2, l'intervallo utilizzato sarà [a1; a2];
2) Secondo Passo: ripetere il passo indicato nel precedente punto 1) per tutti i parametri
interessati alla Sensitivity Analysis. La scelta di due parametri può essere utile sia per
condurre una Univariate Sensitivity Analysis (ovvero un'analisi di sensibilità univariata,
condotta su un solo parametro di riferimento alla volta) sui due parametri considerati
ciascuno singolarmente, sia per condurre una Bivariate Sensitivity Analysis (ovvero
un'analisi di sensibilità bivariata, effettuata congiuntamente su coppie di parametri) sui
entrambi i parametri considerati in maniera congiunta, contemporaneamente;
3) Terzo Passo (figura 4.10): per avviare la Sensitivity Analysis dobbiamo entrare nell'ambiente
Option Map, selezionare un Operator (OR o AND oppure una funzione quale può essere ad
esempio la funzione Sum – Somma), cliccare il tasto destro del mouse e selezionare il
percorso Analysis → Univariate/Bivariate Sensitivity Analysis;
In alternativa (figura 4.11) possiamo avviare la Sensitivity Analysis utilizzando la Toolbar posta in
alto nella schermata principale.
(Figura 4.9: Sensitivity Analysis – Primo metodo di lancio, passi 1 e 2)
133
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
(Figura 4.10: Sensitivity Analysis – Primo metodo di lancio, passo 3)
(Figura 4.11: Sensitivity Analysis – Secondo metodo di lancio)
Possiamo ripetere la Sensitivity Analysis sul contratto derivato quante volte riteniamo opportuno. I
risultati delle analisi vengono mostrati da quella più recente alla più vecchia. Spesso è utile
impostare la funzione Repeated Analysis (attraverso la selezione del percorso Settings → Repeated
Analysis) la quale ci permette di implementare l’esecuzione dell’analisi sul contratto per le volte
impostate con il percorso Settings → Fairmat Preferences →Repeated Analysis: number of
replications. In quest’ultimo caso, Fairmat mostra sul tab Log dello Status Panel anche il valore
medio e un valore per la deviazione standard della popolazione statistica oggetto dell’analisi.
Impact Analysis
La Impact Analysis mostra l'impatto sul Mark to Market del contratto oggetto di analisi di una
specifica variazione intervenuta contemporaneamente nel valore di uno o più parametri. Qualora la
Impact Analysis venga effettuata su due o più parametri al termine dell'elaborazione i parametri
verranno mostrati in ordine crescente, ovvero in base alla capacità di ciascuno di essi di impattare
sul valore del Mark to Market.
I passi che dobbiamo compiere per poter lanciare una Impact Analysis sono i seguenti:
1) Primo passo (figura 4.12): entrare nell'ambiente Parameters & Functions e scegliere il
parametro, o i parametri, il cui impatto sul Mark to Market del contratto oggetto di analisi
134
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
dovrà essere valutato, cliccandoci sopra due volte verificando poi se la voce Impact del tab
Analysis sia flaggata o meno; nel caso non fosse flaggata, flaggarla;
2) Secondo Passo: ripetere il passo indicato nel precedente punto 1) per tutti i parametri
interessati dalla Impact Analysis. Diversamente che nel caso della Sensitivity Analysis
dovremo poi definire il range di riferimento non compilando direttamente il relativo box ma
selezionando il seguente percorso: Settings → Project Preferences → Analysis Preferences
→ tab Impact (figura 4.13);
3) Terzo Passo: nell'ambiente Option Map, selezionare un Operator (AND, OR oppure una
funzione, quale può essere ad esempio Sum – Somma; in ogni caso, normalmente, si sceglie
l'Operator che si trova più a sinistra), cliccare il tasto destro del mouse e selezionare il
seguente percorso: Analysis → Impact Analysis;
In alternativa, possiamo avviare la Impact Analysis utilizzando la Toolbar posta in alto nella
schermata principale (figura 4.14).
(Figura 4.12: Impact Analysis – Primo metodo di lancio)
(Figura 4.13: Impact Analysis – Definizione del range di riferimento)
135
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
(Figura 4.14: Impact Analysis – Secondo metodo di lancio)
Ad ogni lancio della Impact Analysis Fairmat restituisce come una riga sotto il tab Valuations dello
Status Panel. Con un doppio click su ogni riga presente nel tab Valuations l’applicativo mostra una
figura che traccia il gap nel Mark to Market del contratto oggetto di analisi, causato dall’incremento
(o dal decremento) nel valore del parametro inserito come input (o dei parametri inseriti come
input). Il programma pone in ordine decrescente i parametri coinvolti nella Impact Analysis ovvero
in base alla loro capacità di impatto sulla variazione del Mark to Market del contratto oggetto di
analisi.
Un esempio di grafico relativo al gap nel Mark to Market viene mostrato con la figura 4.15 nella
quale il parametro maggiormente significativo è σ (sigma), seguito da α (alfa). Questo implica che
nel contratto oggetto di analisi, prezzato con il processo stocastico Hull & White ad un parametro, il
parametro σ è il più importante e significativo. Questa informazione ci può essere utile per una
migliore calibrazione dei parametri. Sempre analizzando attentamente ed ancora una volta la figura
4.15, si può notare anche una barra verticale nera che rappresenta il valore atteso del contratto
oggetto di analisi (Expected Project Value), valore che funge da benchmark di riferimento per la
valutazione.
(Figura 4.15: Impact Analysis – Esempio di grafico relativo al gap nel Mark to Market)
136
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
Scenario Analysis
Come abbiamo già avuto modo di vedere nel corso del Capitolo 3, nel paragrafo dedicato
all'ambiente Manage Scenarios, il medesimo ambiente ci permette di creare differenti scenari (o
configurazioni) nell'ambito di un progetto di natura finanziaria (figura 4.16).
Di base viene impostato uno scenario di "Default", ma possiamo aggiungerne uno nuovo o
rimuovere uno già esistente entrando appunto nell'ambiente Manage Scenarios e selezionando i
comandi "Add New" o "Remove". Dopo aver creato uno scenario, possiamo scegliere quale
configurazione utilizzare selezionandola dal combo box Current Scenario.
(Figura 4.16: Scenario Analysis)
In ogni scenario, le seguenti caratteristiche fondamentali dei contratti derivati possono assumere
differenti valori:
a) Contratti derivati American-Style o European-Style o Custom Tag: un contratto derivato può
essere un’opzione American-Style, ossia di tipo americano, in un dato scenario, ma in un altro
scenario può essere o European-Style, ossia di tipo europeo, o Custom Tag;
b) Callability (ossia esigibilità): una Strip of Option può avere (o non avere) la clausola di
esigibilità, a seconda dei vari scenari;
c) Enabled/Disabled (Abilitato/Disabilitato): un’opzione o un Operator può essere considerato
o meno a seconda dei vari scenari;
d) Il simbolo di Fairmat Scenario assume la valenza di un’indice degli scenari selezionabili
nella lista degli scenari possibili. Il simbolo Scenario assume valori da 1 fino al numero di
scenari definiti e possibili. Ciò migliora la flessibilità nella definizione di come uno scenario
differisca da un altro in quanto uno scenario può essere condizionato sulla base di un altro
dato scenario attraverso espressioni logiche (come ad esempio la seguente: iif(Scenario==1;
do this; do that) – ossia se lo scenario selezionato è lo scenario 1, allora deve essere eseguita
una determinata operazione, altrimenti deve essere eseguita un’altra operazione). Anche le
variabili dipendenti di uno scenario possono essere definite allo stesso modo, ossia sulla base
137
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
di un altro dato scenario attraverso espressioni logiche. Ad esempio se volessimo definire una
variabile dipendente di un dato scenario A, la quale assume differenti valori in tutti gli
scenari possibili, basta creare un vettore chiamato A ed utilizzare il simbolo Scenario come
indice. Quindi per esempio possiamo scrivere A[Scenario];
La Scenario Analysis ci permette di lanciare le analisi Scenario o What – if (Cosa succede se ...) per
poter stimare l’impatto di cambiamenti strutturali intervenuti nel modello. Quando gli scenari sono
definiti nel modello, anche la Sensitivity Analysis utilizza le informazioni di configurazione
generando tante linee quanti sono gli scenari (figura 4.17, nel cui esempio vengono presi in esame
due scenari diversi: un'opzione con la clausola di callability ed una senza la clausola di callability).
(Figura 4.17: Scenario Analysis - Esempio)
Possiamo ripetere la Scenario Analysis sul contratto derivato quante volte riteniamo opportuno. I
risultati delle analisi vengono mostrati da quella più recente alla più vecchia. Spesso è utile
impostare la funzione Repeated Analysis (attraverso la selezione del percorso Settings → Repeated
Analysis) la quale ci permette di implementare l’esecuzione dell’analisi sul contratto per le volte
impostate con il percorso Settings → Fairmat Preferences →Repeated Analysis: number of
replications. In quest’ultimo caso, Fairmat mostra sul tab Log dello Status Panel anche il valore
medio e un valore per la deviazione standard della popolazione statistica oggetto dell’analisi.
Greek Analysis
Solitamente il prezzo di un contratto derivato viene calcolato utilizzando un modello statistico in
grado di simulare l'andamento dell'attività finanziaria sottostante, sicchè il prezzo può essere visto,
facilmente, come una funzione di un modello parametrico.
Le greche sono derivate parziali di tale funzione e vengono prese in considerazione per testare la
138
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
sensibilità del prezzo in relazione ai cambiamenti intervenuti nelle condizioni di mercato. Oltre ai
modelli parametrici, un'altra variabile che può essere presa in considerazione per questo tipo di
analisi è il flusso temporale, il passare del tempo.
Se prezziamo, ad esempio, un contratto Equity Derivatives (ovvero un tipo di contratto derivato
avente come sottostante un titolo azionario o un paniere di titolo azionario) utilizzando come
riferimento il modello di Black e Scholes allora possiamo ipotizzare, realisticamente, che il
sottostante segua un GBM (Geometric Brownian Motion).
Per cui:
S (t )  S (t )dt  S (t ) dW (t )
[4.1]
Con S(0) = S0 (ovvero lo "Starting Value") e con i flussi di cassa che vengono scontati, attualizzati,
ad un tasso di interesse costante privo di rischio.
In questa modellazione il prezzo del contratto è una funzione V che dipende dai parametri μ, σ, S0, r
nonché la vita residua del contratto, ovvero dal tempo mancante alla scadenza. Allora definiremo le
greche come segue:
V

[4.2]
S 0
 2V
S 02
V


V

r
V

t

[4.3]
[4.4]
[4.5]
[4.6]
In particolare:
• Delta (Δ) – formula [4.2] – è la derivata prima del prezzo del contratto derivato rispetto al
prezzo dell'attività sottostante. Misura le variazioni attese del prezzo del contratto derivato al
variare del prezzo dell'attività sottostante;
• Gamma (Γ) – formula [4.3] – è la derivata seconda del prezzo del contratto derivato rispetto
al prezzo dell'attività sottostante. Misura le variazioni del delta del contratto derivato al
variare del prezzo dell'attività sottostante;
• Vega (υ) – formula [4.4] – è la derivata prima del prezzo del contratto derivato rispetto alla
volatilità del titolo sottostante, e quindi rispetto alla sua deviazione standard (la quale come
è noto misura il grado di rischiosità del sottostante medesimo). Misura quindi quanto varia il
valore del contratto derivato al variare del parametro σ (sigma, ovvero appunto la deviazione
standard dell'attività sottostante);
• Theta (Θ) – formula [4.5] – è la derivata prima del prezzo del contratto derivato rispetto a T.
Misura quindi quanto varia il valore del contratto derivato al variare del tempo a scadenza,
della maturità. Spesso tale greca viene espressa con un valore negativo;
• Rho (ρ) – formula [4.6] – è la derivata prima del prezzo del contratto derivato rispetto al
tasso di interesse privo di rischio. Misura quindi la variazione del prezzo del contratto
derivato rispetto ad una variazione intervenuta nel tasso di interesse privo di rischio;
139
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
Espliciteremo come poter effettuare il calcolo delle greche in Fairmat.
Nell'ambiente Option Map, bisogna selezionare un Operator (AND, OR oppure un altro tipo di
Operator), cliccarci sopra con il tasto destro del mouse e selezionare il seguente percorso:
Analysis → Greek Derivatives (figura 4.18).
(Figura 4.18: Greek Analysis)
Una volta terminato il calcolo delle greche, cliccando sulla corrispondente linea presente sotto il tab
Valuations dello Status Panel, possiamo visualizzare una tabella riportante i valori delle stesse.
Da un punto di vista squisitamente tecnico, le greche vengono calcolate numericamente attraverso
delle differenze finite. Per ciascun rapporto incrementale da stimare, viene effettuata una nuova
valutazione con il corrispondente parametro modificato in maniera adeguata. Per esempio la greca
Delta (Δ) viene calcolata attraverso la seguente:
V S 0  h   V S 0 

[4.7]
h
La greca Gamma (Γ) è una derivata seconda, sicchè sarà necessario effettuare un'ulteriore
valutazione. Di conseguenza Gamma (Γ) viene calcolata attraverso la seguente:
V S 0  h   V ( S 0  h)  2V ( S 0 )

[4.8]
h2
Attraverso questi calcoli viene fissata la testa di serie da simulare in modo tale da minimizzare
l'errore statistico sul numeratore del rapporto.
Ciascun processo stocastico fornisce delle informazioni riguardanti quei parametri da considerare o
come un punto di partenza o come parametri di volatilità da variare nei calcoli delle greche Delta
(Δ), Gamma (Γ), Vega (υ).
In presenza di più processi, di più contratti da valutare, le greche verranno calcolate per tutti i
parametri di tali processi così che vi saranno più Delta (Δ), Gamma (Γ) e così via.
140
CAPITOLO 4 – LE ANALISI E GLI OUTPUT
Le greche dei contratti derivati sui tassi di interesse
Per garantire consistenza e senso tecnico alle greche calcolate attraverso l'applicazione del modello
Black e Scholes, nel caso di un contratto derivato sui tassi di interesse le greche Delta (Δ), Gamma
(Γ) e Rho (ρ) vengono calcolate nel seguente modo:
• Delta (Δ) e Gamma (Γ): nel modello di Black tali greche vengono calcolate rispetto al valore
di partenza del tasso forward e nella valutazione il tasso di attualizzazione viene tenuto
costante, invariato. Allo stesso modo, similarmente, nel caso di un processo non arbitrario
sui tassi a breve, per il quale la simulazione dipende dalla struttura per scadenze dei tassi di
interesse (ovvero dalla zero rate curve) – come avviene nel caso del modello Hull & White –
tali greche vengono calcolate mutando costantemente la struttura per scadenze e
mantenendo, invece, invariato il tasso di attualizzazione;
• Rho (ρ): nel modello di Black tale greca viene calcolata considerando il tasso di interesse
privo di rischio e mantenendo costante il valore iniziale del tasso forward. Allo stesso modo,
similarmente, nel caso di un processo non arbitrario sui tassi a breve, per il quale la
simulazione dipende dalla struttura per scadenze dei tasssi di interesse (ovvero dalla zero
rate curve) tale greca viene calcolata mutando il tasso di attualizzazione e mantenendo,
invece, invariata la struttura per scadenze di riferimento per la simulazione;
Il cambio del metodo attualizzazione viene eseguito a prescindere dal modello di discounting
prescelto (quindi indipendentemente che esso sia il modello Use Costant Risk Free Rate oppure il
modello Use Deterministic Expression oppure il modello Use Dynamic Term Structure).
141
CAPITOLO 5
LA MODELLAZIONE
DEI
CONTRATTI
FINANZIARI
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Ogni progetto di investimento coinvolge una o più attività finanziarie sottostanti; in più vi possono
essere numerose fonti di incertezza, valori guida e variabili di stato.
Ciascuna attività sottostante può, in particolare, seguire o un processo stocastico secondo il
processo Geometric Brownian Motion (GBM), o secondo un Mean Reverting Process, o secondo un
Log-Mean Reverting Process, o secondo Generic Itô Process o, infine, secondo un Generic Log-Itô
Process.
I processi stocastici appena elencati in serie, sono tutti noti come processi di diffusione. Per
modellare una variabile economica in una maniera più realistica possiao anche aggiungere un
Poisson Jump Process ad uno già esistente.
Vi sono poi disponibili anche i seguenti modelli stocastici più recenti: il Auto-Regressive Process, (o
ARMA) e il Log-Auto Regressive Process (o Log-ARMA).
Geometric Brownian Motion (GBM)
Per una variabile di stato V(t) che segue un Geometric Brownian Motion, l'equazione del suo
incremento nell'intervallo temporale di durata Δt è la seguente:
V (t )
 g (t )   t 
[5.1]
V (t )
dove g indica il parametro di moto, σ incida la varianza del parametro e, infine, ϵ rappresenta una
distribuzione normale standardizzata. Secondo la [5.1], il rapporto di variazione di valore
dell'attività sottostante nell'intervallo temporale definito è dato dalla somma di una parte
deterministica (gΔt) e di una componente stocastica (σ √ Δt ϵ ) , per cui la distribuzione
dell'incremento di V(t) è di tipo log-normale.
Il processo log-normale viene spesso utilizzato per modellare l'evoluzione dei prezzi delle attività
finanziarie o dei valori dei progetti finanziari (per cui, ad esempio tale processo può essere molto
utile per calcolare il valore attuale dei flussi di cassa prodotti dal progetto) in quanto essi non
possono mai assumere valori negativi.
La caratteristica principale di questo tipo di processi è quello per cui, appena si presta attenzione al
futuro, il range dei percorsi possibili (dei “path” possibili), soprattutto per il processo della
distribuzione log-normale, si amplifica con il tempo. Ovvero, la volatilità dell'attività sottostante,
misurata dalla sua deviazione standard, cresce con la radice quadrata della lunghezza dell'orizzonte
temporale di riferimento. Infatti:
V (t )  gV (t )t
[5.2]
gt
V (t )  V (0)e
[5.3]
2
2
VarV (t )   V (t ) t
[5.4]
2
2
Var V (t )   V (t ) t
[5.5]
2
2 gt  t 1
VarV (t )  V (0) e
[5.6]
2
Utilizzo del GBM in Fairmat
In Fairmat, nell'ambiente Stochastic Process, possiamo inserire un processo di Geometric Brownian
Motion selezionando il seguente percorso: Add S. Process → Standard Processes: GBM
Appena inserito nell'ambiente Stochastic Process un GBM, sono editabili i seguenti tab (figura 5.1):
Data Source, GBM, Preview, Bounds, Jumps, Parameters e History. Analizzeremo ora nel dettaglio
142
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
due dei tab mostrati nella figura 5.1, ovvero i tab Data Source e GBM, che sono i tab principali e
più importanti.
Il tab Data Source mostra e ci richiede di compilare i seguenti campi:
• “Binding type”: con il quale possiamo decidere se collegare il progetto ad una specifica serie
di dati (tramite la selezione della voce “Bind object to specific data”, o di scollegare il
progetto a qualsiasi data source, con la conseguenza che le informazioni eventualmente
acquisite in precedenza andranno perse (tramite la selezione della voce “Unbind object data
source (binding info will be lost”) oppure ancora, infine, di disabilitare il collegamento ai
dati (tramite la selezione della voce “Disable Data Binding”);
Qualora avessimo deciso di valorizzare il campo “Binding type” selezionando la voce “Bind object
to specific data” diverranno poi selezionabili e valorizzabili i seguenti campi:
• “Market”: con il quale andiamo ad indicare il mercato di riferimento;
• “Foreign Market”: con il quale andiamo ad indicare il mercato estero di riferimento;
• “Ticker”;
• “Calibration Strategy”: con il quale specifichiamo la strategia di calibrazione da imporre al
modello stocastico generato; in tal senso le scelte possibili sono le seguenti: “Historical
series calibration” (Calibrazione mediante utilizzo delle serie storiche), “Exchange rate
historical calibration” (Calibrazione mediante utilizzo dei tassi di cambio storici); “Volatility
surface calibration” (Calibrazione mediante utilizzo della volatilità apparente);
Infine, premendo sul tasto “Calibration Options” possiamo impostare per la “Calibration Strategy”
scelta:
1) “Time series samples frequency” (frequenza di campionamento della serie temporale);
2) “Interval in years on which the samples must be found” (intervallo di tempo, espresso in
anni, sul quale si deve effettuare il campionamento);
3) “Minimum number of observations in historical series” (Numero minimo di osservazioni
delle serie storiche);
4) “Maximum number of observations in historical series” (Numero massimo di osservazioni
delle serie storiche);
5) “Growth Rate calibration” (calibrazione del tasso di crescita): la calibrazione può avvenire
seguendo due diverse modalità: “Use Historical Price” (Utilizzo dei prezzi storici) oppure
“Use Zero Rate Curve” (Utilizzo della struttura per scadenze dei tassi di interesse);
6) “Volatility calibration method” (metodo di calibrazione della volatilità): i metodi adottabili
possono essere, alternativamente, i seguenti: “Population”, “Risk Metrics”, “Risk
MetricsAVG”;
7) “Risk metrics average window” (finestra Risk MetricsAVG);
8) “Local currency conversion” (conversione in valuta locale);
9) “Convert to univariate process” (conversione al processo univariato);
Si noti che i campi “Market”, “Foreign Market” e “Ticker” sono esportabili mediante l'attivazione
del relativo flag “Publish”.
Il tab GBM mostrerà poi i seguenti campi:
• “Base Value”: che equivale a V(0);
• “Volatility”: che equivale a σ;
• “Control Parameters”: che definisce, in modo alternativo, due espressioni per il parametro di
moto g, ovvero:
- “Growth Rate; Risk Premium”: nella quale g equivale al Growth Rate meno il Risk
143
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Premium (ovvero il tasso di crescita meno il premio al rischio);
- “Payout Rate (Dividend Yield)”: nella quale g equivale al Payout Rate (ovvero il tasso di
distribuzione) che sta al dividend yield meno il valore costante del risk free rate (ovvero il
tasso privo di rischio);
Si noti che la lunghezza di Δt viene definita selezionando il seguente percorso: Settings →
Numerical Settings → campo # of discrete time steps.
Al momento le specificazioni sul GBM e relative all'espressione del “Payout Rate” (“Dividend
Yield”) possono essere utilizzate solo con il metodo di attualizzazione al tasso di interesse privo di
rischio (o risk free rate). Qualora necessitassimo di un altro metodo di attualizzazione dovremo, al
momento, modellare i flussi di casso impostando il tasso di crescita (Growth Rate) e il tasso del
premio al rischio (Risk Premium).
(Figura 5.1a: GBM, campi da compilare)
144
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
(Figura 5.1b: GBM, esempio di andamento grafico)
Calibrazione del MGB: opzioni di stima
Come abbiamo avuto modo di accennare in merito alle possibili strategie di calibrazione
selezionabili nel tab Data Source, la calibrazione dei parametri relativi al tasso di crescita (“Growth
Rate”) e alla volatilità (“Volatility”) può essere performata utilizzando tre differenti strategie:
1) Calibrazione delle serie storiche: è una strategia di calibrazione che sfrutta le serie storiche
dell'indice;
2) Calibrazione dei tassi di cambio: è una strategia di calibrazione che fissa i parametri per la
simulazione di un tasso di cambio;
3) Calibrazione della volatilità apparente: è una strategia di calibrazione che fissa i parametri
scaricandoli direttamente dal market data provider. Questa caratteristica è disponibile se
viene utilizzato il Market Data Provider di Bloomberg;
Nel caso in cui la valuta dell'indice di riferimento sia differente dalla valuta associata al mercato nel
quale il contratto viene valutato, allora viene incorporato nel tasso di crescita un aggiustamento
quantitativo calcolato sulla base delle serie storiche.
Se il processo è multivariato la matrice delle correlazioni viene sempre determinata attraverso le
serie storiche.
Vi sono poi alcune opzioni di calibrazione che possono essere impostate per modificare la
procedura di calibrazione stessa. In particolare:
• “Time series sample frequency” (frequenza di campionamento della serie temporale):
imposta la frequenza delle serie storiche utilizzate o per stimare il tasso di crescita nel caso
del calcolo dei prezzi storici o per determinare l'aggiustamento quantitativo, o per
determiare la matrice delle correlazioni, nel caso in cui esse debbano essere calcolate;
• “Growth rate calibration” (calibrazione del tasso di crescita): nel caso della strategia del
145
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
•
•
•
•
•
•
•
calcolo dei prezzi storici, se impostiamo l'utilizzo della “Zero Rate Curve”, il tasso di
crescita viene calcolato attraverso la struttura per scadenze dei tassi di interesse, mentre, se
impostiamo l'utilizzo dei prezzi storici, il tasso di crescita viene calcolato attraverso le serie
storiche;
“Volatily calibration method” (metodo di calibrazione della volatilità): imposta il metodo da
utilizzare nel calcolo della volatilità: o il classico metodo sulla popolazione (“Population”)
oppure le metriche del rischio (“Risk Metrics” o “Risk MetricsAVG”) laddove per le più
recenti osservazioni sia stata calcolata la media;
“Risk metrics average window” (finestra della media delle metriche del rischio): imposta il
numero di elementi che devono essere considerati nel calcolo delle metriche del rischio
medie;
“Local currency conversion” (conversione della valuta locale): nel caso del calcolo dei
prezzi storici, tale opzione converte le serie storiche nella valutazione della valuta di
mercato e utilizza le serie convertite per calcolare il tasso di crescita e la volatilità e per
assegnare il valore di partenza del processo;
“Convert to univariate process” (conversione al processo univariato): nel caso della
specificazione di ticker multipli nel campo “Ticker”, l'impostazione permette di specificare
se il risultato sarà un processo multivariato (non si attiverà allora il relativo flag) o un
processo univariato risultante dalla media ponderata delle differenti componenti (allora si
attiverà il relativo flag);
“Interval in years on which the samples must be ritrieved” (Intervallo temporale, espresso in
anni, sul quale il campione debba essere recuperato): imposta quanto lontano dobbiamo
cercare nei dati storici passati i campioni;
“Minimum number of observed samples” (Numero minimo di campioni osservati): fissa il
numero minimo di osservazioni da utilizzare come serie storiche;
“Maximum number of observed samples” (Numero massimo di campioni osservati): fissa il
numero massimo di osservazioni da utilizzare come serie storiche;
Il GBM per la simulazione dei tassi di cambio
Quando utilizziamo la strategia di calibrazione dei tassi di cambio, il modello di riferimento è
quello descritto dalle seguenti dinamiche:
dX (t )  (rd  r f ) X (t ) dt  X (t ) dW (t )
[5.7]
dove rd e rf indicano, rispettivamente, il tasso di interesse a breve domestico privo di rischio e il
tasso di interesse a breve estero privo di rischio, σ indica la volatilità del tasso di cambio, X indica il
tasso di cambio e rappresenta il valore, espresso in valuta domestica, di una quantità unitaria della
valuta estera.
I tassi a breve vengono calcolati estrapolando nella “Zero Rate Curve”, nelle curve dei tassi a breve
dei due paesi, mentre la volatilità viene calcolata sulla base delle serie storiche del tasso di cambio.
La valuta domestica è quella nella quale vengono espletati, effettuati, i pagamenti e definisce la
misura del rischio neutrale da utilizzare per la valutazione.
L'equazione di previsione di previsione della dinamica, viene utilizzata, ad esempio, quando il
mercato domestico è “EU” (Europa), il mercato estero è “US” (Stati Uniti, America) e il “Ticker”
relativo al tasso di cambio è “USDEUR Curncy” che indica l'ammontare di euro corrispondenti ad
un dollaro.
Se prendiamo in considerazione i medesimi mercati domestico ed estero ma volessimo prezzare il
reciproco del tasso di cambio (S = 1/X), nell'esempio come già accennato “USDEUR Curncy”, le
146
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
dinamiche che dovremo utilizzare vengono trovate attraverso il Lemma di Itô e quindi attraverso le
seguenti dinamiche:
 1 
  (r f  rd   2 ) S (t ) dt  S (t )dW
dS (t )  d 
X
(
t
)


[5.8]
Fairmat automaticamente verifica la stringa del “Ticker” e, in dipendenza del mercato locale e del
mercato estero, imposta le dinamiche in accordo con la [5.7] e con la [5.8].
I “Ticker” relativi alle valute supportati in Fairmat sono:
– quelli trovati concatenando due delle seguenti stringhe di valute: “EUR”, “USD”, “GBP”,
“JPY”, “CHF”, “HKD” seguite dalla stringa di caratteri “Curncy” (ad esempio
“EURUSDCurncy”, “USDCHFCurncy”, e via discorrendo);
– i tassi di cambio di riferimento della Banca Centrale Europea (BCE): indice EUCFUSD,
indice EUCFGBP, indice EUCFJPY, indice EUCFCHF, indice EUCFHKD;
Mean Reverting Process
Il Mean Reverting Process più semplice (ovvero quello di Ornstein – Uhlenbeck) è il seguente:
Vt   (V  Vt )t  s t 
[5.9]
dove η indica la velocità di reversione, V indica il livello di lungo termine per Vt (ovvero il livello
al quale tende Vt quando t tende a ∞, infinito), s indica il parametro per identificare la volatilità e ϵ
indica una distribuzione normale standardizzata.
Il Mean Reverting Process è adatto per descrivere l'evoluzione dei prezzi delle materie prime o di
altre attività che sperimentano shock di breve termine muovendo i prezzi al di fuori del loro livello
di lungo termine (o del loro livello medio) e al di fuori del controllo da parte delle forze di mercato
(domanda e offerta) le quali poi spingono indietro i prezzi stessi, entro i loro livelli di lungo
termine, i loro livelli medi.
Se Vt indica il prezzo di una materia prima, allora esso potrebbe essere il costo marginale di
produzione di tale attività nel lungo periodo.
Il Mean Reverting Process è anche adatto per modellare le dinamiche dei tassi di interesse, come ad
esempio viene fatto dal modello di Vasicek o dal modello di Cox – Ingersoll – Ross.
Al fine della definizione del modello di Vasicek o del modello di Cox – Ingersoll – Ross, s deve
essere definito come di seguito:
• s 
[5.10]
per il modello di Vasicek
s   Vt
•
[5.11]
per il modello di Cox – Ingersoll – Ross
Utilizzo del Mean Reverting Process in Fairmat
147
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
In Fairmat, nell'ambiente Stochastic Process, possiamo inserire un Mean Reverting Process
selezionando il seguente percorso: Add S. Process → Standard Processes → Mean Reverting
Process.
Appena inserito nell'ambiente Stochastic Process un Processo di Reversione Media, sono editabili i
seguenti tab (figura 5.2): Data Source, Mean Reverting, Preview, Bounds, Jumps, Parameters e
History. Analizzeremo ora nel dettaglio due dei tab mostrati nella figura 5.2, ovvero i tab Data
Source e Mean Reverting, che sono i tab principali e più importanti.
Il tab Data Source mostra e richiede di compilare i seguenti campi:
• “Binding type”: con il quale possiamo decidere se collegare il progetto ad una specifica serie
di dati (tramite la selezione della voce “Bind object to specific data”, o di scollegare il
progetto a qualsiasi data source, con la conseguenza che le informazioni eventualmente
acquisite in precedenza andranno perse (tramite la selezione della voce “Unbind object data
source (binding info will be lost”) oppure ancora, infine, di disabilitare il collegamento ai
dati (tramite la selezione della voce “Disable Data Binding”);
Qualora avessimo deciso di valorizzare il campo “Binding type” selezionando la voce “Bind object
to specific data” diverranno poi selezionabili e valorizzabili i seguenti campi:
• “Market”: con il quale andiamo ad indicare il mercato di riferimento;
• “Foreign Market”: con il quale andiamo ad indicare il mercato estero di riferimento;
• “Ticker”;
• “Calibration Strategy”: con il quale specifichiamo la strategia di calibrazione da imporre al
modello stocastico generato; in tal senso è possibile una sola scelta ovvero “Ornstein –
Uhlenbeck Historical Calibration” (calibrazione basata sui dati storici ottenuti attraverso
l'applicazione del modello Ornstein – Uhlenbeck);
Infine, premendo sul tasto “Calibration Options” possiamo impostare per la “Calibration Strategy”
scelta:
1) “Interval in years on which the samples must be found” (intervallo di tempo, espresso in
anni, sul quale si deve effettuare il campionamento);
2) “Minimum number of observations in historical series” (Numero minimo di osservazioni
delle serie storiche);
3) “Maximum number of observations in historical series” (Numero massimo di osservazioni
delle serie storiche);
Si noti che i campi “Market”, “Foreign Market” e “Ticker” sono esportabili mediante l'attivazione
del relativo flag “Publish”.
Il tab Mean Reverting mostrerà poi i seguenti campi:
• “Starting Value”: che equivale a V(0);
• “Standard Deviation”: che equivale al parametro della volatilità s;
• “Mean Reversion Rate” (tasso di reversione media): che equivale al parametro η, il quale, si
ricorda, indica la velocità media della reversione;
• “Risk Premium” (premio al rischio): che indica il tasso di rendimento atteso al di sopra del
tasso di interesse costante privo di rischio;
• “Long-term Mean”: che equivale a V , il livello di lungo termine di Vt;
Si noti che la lunghezza di Δt viene definita selezionando il seguente percorso: Settings →
Numerical Settings → campo # of discrete time steps.
148
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
(Figura 5.2: Mean Reverting Process, campi da compilare)
(Figura 5.2b: Mean Reverting Process, esempio di andamento grafico)
Log-Mean Reverting Process
149
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Un altro tipo di Mean Reverting Process, ovvero il Log-Mean Reverting Process, è il seguente:
Vt
  (V  Vt )t   t 
[5.12]
Vt
dove η indica la velocità di reversione media, V indica il livello di lungo termine per Vt (ovvero il
livello al quale tende Vt quando t tende a ∞, infinito), s è il parametro relativo alla volatilità e ϵ
rappresenta una distribuzione normale standardizzata.
Generic Itô Process
Il processo stocastico continuo nel tempo V(t) rappresentato dall'equazione dinamica:
[5.13]
V (t )   (V (t ), t )t   (V (t ), t )  
viene definito Generic Itô Process.
In particolare: ϵ rappresenta una distribuzione normale standardizzata;  (V (t ), t ) e  (V (t ), t ) sono
funzioni note (e non di tipo casuale).
La caratteristica principale del Generic Itô Process appena presentato è data dal fatto che i
coefficienti relativi al flusso e alla varianza sono funzioni dello stato corrente e del tempo.
La distribuzione di probabilità dell'incremento di questo processo, ovvero V (t ) è di tipo normale
con media pari a  (V (t ), t ) e varianza pari a  2 (V (t ), t ) t .
Il Generic Itô Process è il processo di tipo continuo (il processo stocastico di tipo continuo) più
generale.
Log-Itô Process
Il Log-Itô Process generalizzato per F (Vt , t )  ln(Vt ) (chiamato Ft), diventa:

2
Ft   g 
 t  W
2 

In altre parole, il processo per Ft è il seguente:
Ft  F0  Ft
[5.14]
[5.15]

2 
t  W
Ft  ln(V0 )   g 
[5.16]
2 

Nella [5.16], la quale rappresenta un processo distribuito in modo normale con media pari a e
( g   2 / 2)t varianza pari a  2T , in particolare, ln(V0 ) indica il valore di base, di partenza,
( g   2 / 2)t rappresenta il termine deterministico e W , infine, rappresenta il termine
stocastico.
Il processo per Vt è, invece, il seguente:
2
[5.17]
Vt  V0 e g  / 2 t e W
La [5.17] rappresenta un processo distribuito in modo log-normale.
Poisson Jump Process
150
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Il Poisson Jump Process è un processo soggetto a salti (o eventi) di misura fissa o variabile, causale,
per la quale i tempi di arrivo seguono una distribuzione casuale secondo Poisson.
Premesso che λ denota il tasso medio di arrivo di un evento, durante un intervallo di tempo di
lunghezza infinitesimale pari a dt, la probabilità che un evento occorra, accada, è data da λdt,
mentre la probabilità che un evento non accada è data da (1 – λdt), evento complemento.
L'evento è un salto di misura u(t), la quale può essere essa stessa una variabile casuale.
Denotiamo con q(t) un processo poissoniano, allora l'incremento che il processo stesso ha
nell'intervallo t , t  t  , incremento denotato con Δdt, sarà pari a:
• 0 se l'evento non accade (si ricordi che la probabilità che l'evento non accade è pari a 1 –
λdt;
• u(t) se l'evento accade (si ricordi che la probabilità che l'evento accade è pari a λdt;
Fairmat ci permette di combinare un Poisson Jump Process con un percorso deterministico di tipo
continuo (lo stesso processo poissoniano è disponibile solo attraverso specifici plug-ins).
Questo tipo di processo ha un incremento pari a ΔV(t), per cui:
V (t )  f (V (t ), t )t  g (V (t ), t ) q (t )
[5.18]
dove f (V (t ), t ) e g (V (t ), t ) sono funzioni note (non casuali).
Tale incremento può essere anche combinato con un processo di diffusione, per cui possiamo
riscrivere la precedente [5.18] nei seguenti termini:
V (t )  a(V (t ), t )t  b(V (t ), t )   g (V (t ), t )q(t )
[5.19]
Si noti che il Poisson Jump Process influenza il livello del rischio idiosincratico (così come il
livello del rischio diversificabile) ma non anche il parametro di flusso.
Un esempio: GMB con Poisson Jump Process
Possiamo prendere visione, osservare, l'andamento del prezzo del petrolio come una combinazione
del Geometric Brownian Motion con un Poisson Jump Process; durante i periodi di normalità i
prezzi fluttuano continuamente, ma i prezzi possono anche essere soggetti ad ampi rialzi o a pesanti
ribassi a causa di improvvisi cambiamenti nella condizioni politiche ed economiche.
Per ottenere tale combinazione in Fairmat, dovremo innanzitutto selezionare il seguente percorso:
Stochastic Process → Add S. Process → GBM.
Dopo di ché, dovremo fare doppio click sul nuovo processo stocastico appena creato in modo da
inserire i seguenti parametri (figura 5.3):
• “Base Value”: si supponga di inserire ad esempio il valore 100;
• “Volatility”: si supponga di inserire ad esempio il valore 15%;
e poi scegliere nel box “Control Parameters” fra la funzione “Dividend Yield” o la funzione
“Growth Rate, Risk Premium”.
Dovremo poi aggiungere, inserire, un Poisson Jump Process avente, per ipotesi, un tasso medio di
arrivo dell'evento (o Arrival Rate) pari a 135 ed un Loss of Value (Perdita di valore) pari al 75%
(figura 5.4). Nell'esempio della figura 5.4, notiamo che sono stati forzati i valori di default dei
percorsi e dei path, impostando, rispettivamente, i valori 1000 e 100.
(Figura 5.3: Esempio di combinazione GBM con il Poisson Jump Process 1)
151
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
(Figura 5.4: Esempio di combinazione GBM con il Poisson Jump Process 2)
La calibrazione dei modelli
Il file XML Interest Rate Market Data
Il file XML Interest Rate Market Data contiene informazioni che descrivono i dati relativi ai tassi di
interesse per un dato mercato in corrispondenza di una determinata scadenza, o durata.
Possiamo utilizzare tali dati per calibrare i modelli sui tassi di interesse.
Per i campi dei vettori, i valori delle differenti componenti vengono separati attraverso il tabulatore.
Per i campi delle matrici, ciascuna riga viene costruita come se fosse un vettore per cui le varie
linee vengono separate dal carrello di ritorno e dalla linea di avanzamento (che corrisponde alla
linea standard di terminazione nei sistemi Windows).
Le scadenze, le maturities, vengono misurate in frazioni d'anno, mentre i tassi e le volatilità
vengono scritte con il loro valore corretto senza però il simbolo % (percentuale) – per cui un tasso
del 3,2% viene scritto come 0.032; una volatilità del 15,2% viene scritta come 0,152.
I campi contenuti nei file Interest Rate Market Data sono i seguenti:
152
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Market (mercato): è una stringa che descrive il mercato al quale i dati si riferiscono; le
possibili scelte sono: EU (per il mercato europeo), US (per il mercato americano), UK (per il
mercato del Regno Unito), SW (per il mercato svizzero), GB (per il mercato britannico), JP
(per il mercato giapponese);
Date (data): indica la data alla quale i dati si riferiscono; il formato della data del tipo
ddmmyyyy ovvero day/month/year (gg/mm/aaaa, giorno/mese/anno);
CashRates (tassi a breve): è un vettore contenente i valori dei tassi a breve (ovvero con
scadenza minima di un giorno e massima di 6 mesi);
CashDates (scadenze dei tassi a breve): è un vettore contenente le scadenze corrispondenti
ciascuna ai valori contenuti nel campo CashRates;
FRARates (tassi F.R.A.): è un vettore contenente i valori dei tassi sui contratti F.R.A.
(Forward Rate Agreement);
FRADates (scadenze dei F.R.A.): è un vettore contenente le scadenze corrispondenti
ciascuna ai valori nel campo FRARates (ovvero le frazioni d'anno dopo la quale viene
corrisposto il F.R.A.);
SwapRates (tassi Swap): è un vettore contenente i valori dei tassi sui contratti Swap;
SwapDates (scadenze dei Swap): è un vettore contenente le scadenze corrispondenti
ciascuna ai valori nel campo SwapRates;
SwapCouponYear (cedola annua dello Swap): è un numero intero che rappresenta il numero
di pagamenti all'anno relativi alla parte fissa del contratto Swap o per il quale vengono
quotati i tassi Swap;
ZRMarket (tassi zero coupon di mercato): è un vettore contenente i valori dei tassi sui zero
coupon bond (da utilizzare, da considerare come tassi di interesse composti di tipo continuo,
così che il prezzo dello zero coupon bond con scadenza al tempo T sia data da exp (ZRMarket(T)*T);
ZRMarketDates (yield curve): è un vettore contenente le scadenze corrispondenti ciascuna ai
valori contenuti nel campo ZRMarket;
ATMCapVolatility (volatilità degli ATMCap): è un vettore contenente le volatilità Cap del
modello di Black per lo strike at the money, ovvero alla pari, avente diverse scadenze;
CapTenor (tenore dei Cap): indica la frazione compresa fra due pagamenti di opzioni di tipo
Cap per le quali siano dati il vettore ATMCapVolatility e la matrice CapVolatility;
CapMaturity (scadenza dei Cap): è un vettore contenente le scadenze corrispondenti a
ciascun Cap (di riferimento sia per il vettore ATMCapVolatility che per la matrice
CapVolatility);
CapRate (tassi Cap): è un vettore contenente i strike price per le opzioni di tipo Cap e di
riferimento per la matrice CapVolatility;
CapVolatility (volatilità dei Cap): è una matrice contenente i valori relativi alle volatilità dei
Cap; l'elemento CapVolatility [i, j] indica la volatilità (determinata secondo il modello di
Black) del Cap con scadenza pari al valore contenuto nel campo CapMaturity [i] e strike
price uguale, corrispondente, al valore contenuto nel campo CapRate [j];
Swaption Tenor (tenore delle swaption): indica la frazione d'anno intercorrente fra due
pagamenti relativi alla parte fissa del contratto Swap, per il quale viene data la matrice delle
volatilità delle swaption;
OptionMaturity (scadenza opzione): è un vettore contenente le scadenze corrispondenti a
ciascuna swaption contenuta, a sua volta, all'interno della matrice SwaptionVolatility (ovvero
le scadenze in corrispondenza delle quali il detentore della swaption può decidere se
acquistare o meno lo swap);
SwapDuration (duration dello Swap): è un vettore contenente i valori per le duration dei
153
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
•
Swap connesse alle swaption contenute, a loro volta, all'interno della matrice
SwaptionVolatility (la durata dello Swap può essere acquisita dal detentore della swaption);
SwaptionVolatility (volatilità delle swaptions): è una matrice contenente i valori per le
volatilità delle swaption; l'elemento SwapVolatility [i, j] indica la volatilità (determinata
secondo il modello di Black) della swaption che può essere esercitata al tempo
corrispondente alla scadenza contenuta nel campo OptionMaturity [i] e con una duration
dello swap sottostante corrispondente al valore contenuto nel campo SwapDuration [j];
<InterestRateMarketData>
L'ordine
dei vari campi all'interno del file non è rilevante e, data una certa calibrazione, può essere
<Market>EU</Market>
che<Date>31122010</Date>
non tutti i campi siano necessari ai fini del calcolo. Se un valore di volatilità non è rilevabile,
perché
non osservabile sul mercato, il suo corrispondente valore nella matrice CapVolatility o
<CashRates>0.0051 0.0067 0.008 0.0094 0.0097 0.0117</CashRates>
SwapVolatility è da porre pari a 0.
<CashDates>0.0192 0.0833 0.1667 0.25 0.3333 0.5</CashDates>
<FRARates>0.0134 0.0153</FRARates>
<FRADates>0.5
Nella
pagina 1</FRADates>
successiva si riporta un esempio di file formato XML Interest Rate Market Data.
(I valori
visualizzati
in questo
esempio
sono
riportati
solo
<SwapRates>0.0124
0.0147 0.0162
0.0178 0.0194
0.0215 0.0232
0.0242
0.0259 0.0265
0.0284per
0.03 esemplificazione)
0.0306 0.0305 0.0299 0.0288 0.0288 0.0285</SwapRates>
<SwapDates>1 2 3 4 5 6 7 8 9 10 12 15 20 25 30 35 40 50</SwapDates>
<SwapCouponYear>1</SwapCouponYear>
<SwaptionTenor>1</SwaptionTenor>
<ZRMarket>0.0058 0.0054 0.0059 0.0063 0.008 0.0096 0.0122 0.012 0.0129 0.0138 0.0159 0.0176 0.0194 0.0213 0.0232 0.0243 0.0261 0.027 0.0291 0.0307
0.0316 0.0305 0.0291 0.0273 0.0269</ZRMarket>
<ZRMarketDates>0.0027 0.0192 0.0384 0.0833 0.1667 0.25 0.5 0.75 1 2 3 4 5 6 7 8 9 10 12 15 20 25 30 40 50</ZRMarketDates>
<ATMCapVolatility>0.4305 0.5182 0.4666 0.4542 0.4257 0.3913 0.3613 0.3351 0.3211 0.3068 0.2812 0.2569 0.2432</ATMCapVolatility>
<CapTenor>0.5</CapTenor>
<CapMaturity>1 2 3 4 5 6 7 8 9 10 12 15 20</CapMaturity>
<CapRate>0.0175 0.02 0.0225 0.025 0.03 0.035 0.04 0.05 0.06 0.07 0.08 0.1</CapRate>
<OptionMaturity>0.0833 0.25 0.5 1 2 3 4 5 7 10</OptionMaturity>
<SwapDuration>1 2 3 4 5 6 7 8 9 10 15 20 25 30</SwapDuration>
<CapVolatility>0.0000
0.5262
0.4714
0.5135
0.5417
0.5208
0.5551
0.5698
0.5754
0.5857
0.5845
0.5984
0.0000
0.5180
0.5490
0.4939
0.5139
0.5183
0.5235
0.5311
0.5314
0.5404
0.5433
0.5429
0.0000
0.4719
0.4762
0.4695
0.4746
0.4763
0.4626
0.4689
0.4683
0.4767
0.4770
0.4784
0.0000
0.4514
0.4437
0.4355
0.4220
0.4341
0.4153
0.4225
0.4210
0.4317
0.4289
0.4402
0.0000
0.4194
0.4099
0.3993
0.3829
0.3833
0.3687
0.3703
0.3734
0.3775
0.3810
0.3909
0.0000
0.4013
0.3854
0.3712
0.3491
0.3455
0.3303
0.3303
0.3344
0.3345
0.3421
0.3477
0.0000
0.3839
0.3646
0.3468
0.3222
0.3188
0.3025
0.2932
0.2972
0.3002
0.3135
0.3198
0.0000
0.3684
0.3524
0.3395
0.3034
0.2962
0.2769
0.2773
0.2731
0.2774
0.2830
0.2925
0.0000
0.3559
0.3387
0.3276
0.2911
0.2817
0.2651
0.2601
0.2557
0.2608
0.2722
0.2766
0.0000
0.3474
0.3336
0.2607
0.2780
0.2393
0.2508
0.2424
0.2439
0.2476
0.2579
0.2652
0.0000
0.3367
0.3124
0.2994
0.2669
0.2496
0.2344
0.2229
0.2283
0.2340
0.2372
0.2437
0.0000
0.3173
0.2977
0.2643
0.2528
0.2361
0.2204
0.2074
0.2138
0.2156
0.2256
0.2357
0.0000
0.2992
0.2889
0.2585
0.2369
0.2285
0.2072
0.2025
0.2028
0.2005
0.2117
0.2211</CapVolatility>
<SwaptionsVolatility>0.4322
0.3804
0.3984
0.4909
0.4149
0.3967
0.4417
0.4407
0.3725
0.5060
0.4332
0.3304
0.4811
0.3977
0.3067
0.4059
0.3278
0.2881
0.3249
0.2774
0.2642
0.2811
0.2503
0.2503
0.2264
0.2071
0.2357
0.1944
0.1852
0.2282</SwaptionsVolatility>
</InterestRateMarketData>
0.3785
0.3917
0.3999
0.4093
0.3968
0.3908
0.3901
0.3914
0.3909
0.3698
0.3714
0.4121
0.4113
0.4034
0.3780
0.3681
0.3558
0.3536
0.3480
0.3352
0.3502
0.3690
0.4207
0.4057
0.3852
0.3638
0.3519
0.3355
0.3312
0.3303
0.3163
0.3298
0.3476
0.3984
0.3798
0.3619
0.3453
0.3352
0.3280
0.3207
0.3150
0.3007
0.3000
0.3090
0.3638
0.3320
0.3194
0.3074
0.2921
0.2935
0.2877
0.2826
0.2742
0.2737
0.2876
0.3087
0.3023
0.2904
0.2842
0.2794
0.2718
0.2678
0.2639
0.2484
0.2537
0.2719
0.2698
0.2629
0.2552
0.2485
0.2519
0.2403
0.2391
0.2389
0.2312
0.2379
0.2534
0.2427
0.2299
0.2334
0.2310
0.2292
0.2276
0.2274
0.2256
0.2164
0.2212
0.2350
0.2055
0.2038
0.2037
0.2050
0.1992
0.2085
0.2074
0.2118
0.2070
0.2145
0.2238
0.1919
0.1858
0.1962
0.1936154 0.1969
0.2024
0.1981
0.2022
0.2060
0.2186
0.2291
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Il file XML Call Price Market Data
Il file XML Call Price Market Data contiene informazioni che descrivono i dati relativi alle opzioni
155
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
scritte su un certo titolo azionario (o su un certo indice azionario) in corrispondenza di una
determinata data. Possiamo utilizzare tali dati per calibrare il modello di Helston.
Per i campi dei vettori, i valori delle differenti componenti vengono separati attraverso il tabulatore.
Per i campi delle matrici, ciascuna riga viene costruita come se fosse un vettore per cui le varie
linee vengono separate dal carrello di ritorno e dalla linea di avanzamento (che corrisponde alla
linea standard di terminazione nei sistemi Windows).
Le scadenze, le maturities, vengono misurate in frazioni d'anno.
I campi contenuti nel file Call Price Market Data sono i seguenti:
• Market (mercato): è una stringa di caratteri che specifica il mercato di riferimento dell'indice
azionario sottostante o del titolo azionario sottostante;
• Ticker: è una stringa di caratteri che specifica il nome del titolo azionario sottostante o
dell'indice azionario sottostante;
• Date (date): è la data alla quale l'opzione si riferisce. Il formato è del tipo ddmmyyyy,
ovvero day/month/year (gg/mm/aaaa, giorno/mese/anno);
• S0: indica il valore del titolo in corrispondenza della data indicata, riportata nel campo Date;
• StrikeATM: indica il valore dello strike per le opzioni at the money, ovvero alla pari;
• PutPriceATM (Prezzo Put ATM): è il vettore dei prezzi put per lo strike at the money, ovvero
alla pari, in corrispondenza delle differenti scadenze;
• CallPriceATM (Prezzo CallATM): è il vettore dei prezzi call per lo strike at the money,
ovvero alla pari, in corrispondenza delle differenti scadenze;
• MaturityATM (Scadenze ATM): è il vettore delle scadenze corrispondenti ai campi dei
vettori StrikeATM, PutPriceATM e CallPriceATM;
• Maturity (Scadenze): è il vettore delle scadenze corrispondenti ai campi della matrice
CallPrice;
• Strike (Prezzi Strike): è il vettore dei valori dei strike price corrispondenti ai campi della
matrice CallPrice;
• CallPrice (Prezzi call): è la matrice dei prezzi; l'elemento CallPrice [i; j] è il prezzo
dell'opzione call con scadenza corrispondente al valore contenuto nel campo Maturity [i] e
con strike price corrispondente al valore contenuto nel campo Strike [j];
• DividendYield: è il vettore dei dividend yield (ovvero, dei rapporti dividendo/prezzo) in
corrispondenza delle differenti scadenze <tt>;
• DividendYieldMaturity: è il vettore delle scadenze corrispondenti ciascuna ai campi del
vettore DividenYield;
• Volatility (volatilità, varianza): è la matrice delle opzioni call sottointese le varianze;
l'elemento Volatility [i; j] è la varianza sottointesa dell'opzione call con scadenza
corrispondente al campo Maturity [i] e con strike price corrispondente al valore contenuto
nel campo Strike [j];
L'ordine dei vari campi all'interno del file non è importante e, data una certa calibrazione, può
essere che non tutti i campi siano necessari ai fini del calcolo.
Per esempio, se la matrice CallPrice non è definita al fine di calibrare il modello di Helston, tale
matrice verrà definita sotto forma di altre informazioni. Lo stesso accade per il vettore
DividendYield che viene calcolata attraverso la relazione di parità put – call sfruttando il vettore di
informazioni ATM.
Se il prezzo di un'opzione non è rilevabile, perché non osservabile sul mercato, il suo
corrispondente valore nella matrice CallPrice viene posto pari a -1.
156
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Si riporta di seguito un esempio di file formato XML Call Price Market Data.
( I valori visualizzati in questo esempio sono riportati solo per esemplificazione)
<CallPriceMarketData>
<Ticker>YOURINDEX Index</Ticker>
<Date>31122010</Date>
<S0>2278.19</S0>
<StrikeATM>2300</StrikeATM>
<PutPriceATM>64 104.3 133.5 170 215.8 248.7 307.5 360 420.8 453 523.8</PutPriceATM>
<CallPriceATM>26.2 50.3 71.9 106.5 138.7 164.7 158.2 192.7 199.2 219.4 245.7</CallPriceATM>
<MaturityATM>0.03013698630136986 0.1068493150684932 0.2027397260273973 0.2794520547945206 0.3753424657534247 0.4520547945205479
0.5287671232876713 0.6246575342465753 0.7013698630136986 0.7780821917808219 0.8547945205479453</MaturityATM>
<Maturity>0.08333333333333333 0.1666666666666667 0.25 0.5 1 1.5 2</Maturity>
<Strike>1826.472 2054.781 2168.9355 2226.01275 2283.09 2340.16725 2397.2445 2511.399 2739.708</Strike>
<DividendYieldMaturity>0.03013698630136986 0.1068493150684932 0.2027397260273973 0.2794520547945206 0.3753424657534247 0.4520547945205479
0.5287671232876713 0.6246575342465753 0.7013698630136986 0.7780821917808219 0.8547945205479453 0.9506849315068493 1.027397260273973
1.123287671232877 1.2 1.276712328767123 1.372602739726027 1.449315068493151 1.526027397260274 1.621917808219178 1.698630136986301
1.794520547945206 1.871232876712329 1.947945205479452 2.024657534246575</DividendYieldMaturity>
<DividendYield>0.3083582699107246 0.1576927250328625 0.1035512734816964 0.0857649295704567 0.06353199968140713 0.06018800926350469
0.05684401884560224 0.0526640308232242 0.0499210405675944 0.0471780503119646 0.0444350600563348 0.05099526131696908 0.05624342232547651
0.06280362358611079 0.06108838166666165 0.0593731397472125 0.05722908734790107 0.05551384542845193 0.05379860350900279
0.05165455110969136 0.05205709518318747 0.05256027527505761 0.05296281934855372 0.05336536342204984 0.05376790749554595</DividendYield>
<CallPrice>423.77483157
423.56875474 222.47314901
429.23833302 236.29677329
450.16013959 271.51018063
452.51392799 293.07304494
444.26873704 296.72272759
431.08367518 289.59312338
210.11162320
138.70999051
155.60135798
195.78610592
224.85747589
233.56029727
229.23753343
119.78575264
104.15741296
121.96691590
162.61728033
193.23219834
202.13308815
194.45350853
83.29481819
69.65460789
86.57364413
129.62172641
170.24391446
193.50213715
213.61384144
49.80012651 26.86670548 14.32315354
44.87264704 28.17098089
9.92251465
61.05213089 41.88246593 17.74412915
102.40054998 79.55705517 44.87582262
145.57164762 122.36514636 83.71141906
172.39434010 149.85530708 110.99580551
198.49451310 175.82118455 136.45687489
3.96225915
0.64832371
1.21676272
2.62122466
11.59000226
34.56883151
56.55344395
78.20811580</CallPrice>
<Volatility>0.42996300
0.36628900
0.30563000
0.34980900
0.29724400
0.32726100
0.28557400
0.29942100
0.26896300
0.28107600
0.25514100
0.26429300
0.23908400
</CallPriceMarketData><
0.33123400
0.27976000
0.27374900
0.26674500
0.25462000
0.24300700
0.22758700
0.29727500
0.26962100
0.26492600
0.25837200
0.24669400
0.23443800
0.21565700
0.28451800
0.24546900
0.24253500
0.24544000
0.24620600
0.24624800
0.24903600
0.25697500
0.23201800
0.23164200
0.23653900
0.24116500
0.24421000
0.25154400
0.24376300
0.29250300
0.22794100
0.21058600
0.20187900
0.20750600
0.21430800
0.22194900</Volatility>
0.23981300
0.22551400
0.22438000
0.22927600
0.23517900
0.23902700
0.24622200
0.23687700
0.21917000
0.21431700
0.21672100
0.22435600
0.22953700
0.23695200
La modellazione del rischio di credito
Con Fairmat (Versione Professional) possiamo stimare l'impatto dei vari eventi legati al rischio di
credito in uno schema di valutazione apposito così consentendoci di prezzare, appunto, i contratti
derivati sul rischio di credito, ovvero i cosiddetti Credit Derivatives – quali sono ad esempio i
157
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Credit Default Swap (CDS), i First to Default (Ftd) e i Collateralized Debt Obbligations (CDO) – e
consentendoci di prezzare anche i CVA (Credit Value Adjustment) e i DVA (Debt Value Adjustment).
Tutte queste nuove funzionalità di valutazione utilizzano come variabile casuale di riferimento la
variabile causale time to default (tempo del default, letteralmente), la quale modellizza la
probabilità che nel tempo un dato Ente dichiari default, ovvero dichiari uno stato di insolvenza.
La variabile casuale time to default
Fairmat ci consente di calcolare esplicitamente i tempi di default di un ente emittente permettendo
così il pricing dei contratti derivati sul rischio di credito – ovvero i cosiddetti Credit Derivatives – e
la stima del CVA (Credit Value Adjustment).
La variabile casuale time to default può essere utilizzata sia per calcolare la probabilità
deterministica neutrale al rischio di default sia per simulare esplicitamente i tempi di default in una
simulazione Monte Carlo.
La variabile casuale time to default, denotata con il simbolo τ, è una variabile causale che può essere
modellata in vari modi. In particolare Fairmat implementa i modelli di intensità. Di default, di base,
la probabilità della variabile casuale time to default può essere calcolata dalla funzione RNDP la cui
sintassi è la seguente:
RNDP (@randomvar; date)
[5.20]
dove @randomvar indica la variabile causale mentre date indica il tempo la stima della probabilità
di default fa riferimento. Ecco un esempio per la funzione appena esplicitata: RNDP (@v1; pd[1]).
Al fine di modellare l'avvento di un default, di una dichiarazione di insolvenza, o per una
simulazione deterministica o per una simulazione Monte Carlo, deve essere creata una variabile
causale time to default. Per far ciò è necessario selezionare il seguente percorso (figura 5.5):
Parameters & Functions → Add → Function defined by value interpolation
Nella funzione così aggiunta è possibile importare una struttura per scadenze degli spread sui CDS
o una struttura per scadenze degli spread sugli Asset Swap.
Per importare gli spread sui CDS da Bloomberg, in particolare, è necessario selezionare il tab Data
Source e poi specificare il mercato di riferimento (ad esempio EU, US, e via discorrendo), la radice
del ticker di Bloomberg (ad esempio ITALY CDS USD SR) e il tipo di dati (ad esempio Credit
Default Swap Curve). Dopo di ché si dovrà cliccare sul comando “Update”. In questo modo Fairmat
scaricherà tutti gli spread sui CDS disponibili per lo specifico emittente (figura 5.6).
(Figura 5.5: Creazione della variabile casuale time to default, passo 1)
158
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
(Figura 5.6: Creazione della variabile casuale time to default, passo 2)
A questo punto, dovremo passare, selezionandolo, all'ambiente Random Variables in modo da
inserire il simulatore della variabile casuale time to default (selezionando Time to default simulator
– figura 5.7). Nella finestra di dialogo di creazione del simulatore Time to default simulator, sarà poi
necessario specificare il tasso di recupero assunto, ipotizzato (campo “Recovery Rate”), il tenore
degli spread sui CDS (campo “Tenor”), a struttura per scadenze degli spread (campo “Reference to
CDS structure”) e la zero rate curve (campo “Reference to ZR spreads”) - queste ultime due
variabili devono essere precedute dal simbolo @.
159
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Selezionando il tab Preview è poi possibile vedere i tempi di default simulati.
(Figura 5.7: Creazione della variabile casuale time to defautl, passo 3)
La variabile casuale time to default τ è il primo salto temporale di un processo poissoniano, per cui
essa ha una componente esogena che è indipendente da tutte le informazioni sul default liberamente
disponibili sul mercato.
Questa famiglia di modelli è adatta a modellare i credit spreads e, nella loro formulazione base,
sono facili da calibrare ai CDS.
Time Inhomogeneous Poisson Processes
Ci muoveremo ora verso i processi poissoniani a tempi disomogenei (Time Inhomogeneous Poisson
Processes) dove la probabilità del primo default (del primo salto) è una funzione dipendente dal
tempo. Consideriamo un'intensità deterministica variabile in base al tempo  (t ) , funzione positiva e
continua a destra, allora l'intensità cumulata (o funzione di Hazard) è la seguente:
t
(t ) :   (u )du
[5.21]
0
Se Mt è un processo poissoniano standard (avente intensità uno), allora il processo poissoniano a
tempi disomogenei Nt con intensità  (t ) si può descrivere attraverso la seguente:
N t  M  (t )
[5.22]
per cui N avrà il primo salto temporale in τ il che implica, a sua volta, che M avrà il primo salto
temporale in ( ) ; vale il viceversa.
Dalle proprietà dei processi poissoniani si ha:
(t ) :  ~ EXP(1)
[5.23]
160
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
invertendo la [8.23] si avrà:
   1 ( )
[5.24]
con  che indica la variabile casuale esponenziale standard, il che suggerisce implicitamente
come simulare la variabile casuale time to default.
Avremo facilmente anche:
Qs    t  Q( s )  ( )  (t )  Q( s)    (t )
[5.25]
 Q  ( s )  Q  (t )  exp ( s )  exp (t )
ed in particolare, la formula:
 t

Q  t  exp (t )  exp    ( s )ds 
 0

[5.26]
La natura variabile in base al tempo di γ consente di tenere conto di una possibile struttura per
scadenze dei credit spread. E' questo, in effetti, il modello che viene utilizzato per depurare le
probabilità di default dalle quotazioni dei CDS.
Il processo poissoniano a tempi disomogenei, con intensità variabile in base al tempo  (t ) , è la
forma ridotta del modello utilizzato sul mercato per depurare le probabilità di default dalle
quotazioni dei CDS. Considerando il tasso di azzardo, di rischio,  (t ) come una funzione
deterministica e costante a tratti del tipo:
 (t ) =γi per t  Ti 1 , Ti 
[5.27]
dove le Ti attraversano, indicano, le scadenze rilevanti.
Notiamo che:
t
 ( t ) 1
0
i 1
(t )    ( s )ds 
 (T
i
 Ti 1 ) i  (t  T (t )1 )  ( t )
[5.28]
dove β(t) rappresenta l'indice della prima Ti a seguito di t.
E' necessario fissare:
Tj
j
0
i 1
 j :   ( s )ds  (Ti  Ti 1 ) i
[5.29]
Per calcolare le scadenze dei CDS, dove R indica il fair value, la quotazione equa, del contratto e α
indica il tenore, avremo la seguente:
Tb
CDS a ,b (0, R, LGD ; ())  R  P(0, u )(T (u )1  u )d (e  (u ) )
Ta

b
 P(0, T ) R e
i
i  a 1
i
 (Ti )
[5.30]
Tb
 LGD  P(0, u )d (e  (u ) )
Ta
Così che, con la costante a tratti γ, otteniamo:
161
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Ti
CDS a ,b (0, R, LGD ; ())  R  e
i 1  i (u Ti 1) 
P (0, u )(u  Ti 1 )du
Ti 1

b
 P(0, T ) R e
i
i  a 1
 LGD
i
Ti
b
   e
i  a 1
i
 (Ti )
i 1  i ( u Ti 1 ) 
[5.31]
P (0, u )du
Ti 1
Nel mercato si osservano Ta = 0 e Tb = 1y, 2y, 3y … con tenore α (per esempio si può ipotizzare che
Ti si resetti ogni trimestre, trimestralmente) delle quotazioni al fair value R per Tb. Allora possiamo
risolvere le equazioni di cui sopra così:
CDS 0,1 y (0, R0MKT
[5.32]
,1 y , LGD ;  1   2   3   4 :  1 )  0;
1
2
CDS 0, 2 y (0, R0MKT
, 2 y , LGD ;  ;  5   6   7 :  8 :  )  0;...
[5.33]
e così via, trovando in corrispondenza di ciascun tempo i nuovi quattro parametri di intensità.
Simulazione dei tempi di default
Assumendo di aver rilevato il tasso di azzardo, di rischio (positivo deterministico), γ dalle
quotazioni di mercato dei CDS possiamo simulare il tempo di default γ partendo da    1 ( ) ,
seguendo questo schema ed i seguenti passi:
1) simulare una variabile causale esponenziale standard del tipo    1 ,  2 ,...,  m ;
2) per ciascun campione  j , risolvere ( j )   j $ rispetto a  j ; si otterrà che le soluzioni
sono i campioni simulati  1 , 2 ,..., m del tempo di default τ;


CDS
Un CDS (Credit Default Swap) è un contratto swap nel quale l'acquirente effettua un pagamento al
venditore ed in cambio riceve un payoff qualora l'emittente di uno strumento di credito, tipicamente
un bond, un titolo obbligazionario, dichiara uno stato di insolvenza o di default.
Perciò nel caso di un default legato ad un prestito o di un qualunque altro evento legato al rischio di
credito, il venditore del CDS dovrà compensare l'acquirente della perdita occorsa.
Fairmat, versione Professional, ci permette di prezzare i contratti CDS o utilizzando una
simulazione deterministica o una simulazione Monte Carlo. Entrambi i metodi richiedono la
definizione di una variabile casuale time to default.
Di seguito vedremo nel dettaglio come prezzare il CDS, i cui dati vengono riportati nella tabella 5.1
che segue, in Fairmat utilizzando sia la simulazione deterministica che la simulazione Monte Carlo.
162
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
(Tabella 5.1 – Riepilogo dati esempio CDS)
Principal (Capital)
Recovery Rate (Tasso di recupero)
Reference Entity (Ente di riferimento)
Start Date (Data Inizio)
End Date (Data Fine)
Frequency (Frequenza di pagamento)
Buyer Premium (Premio all'acquirente)
$1.000.000,00
40%
Repubblica Italiana
10/07/2012
10/07/2013
Trimestrale
$ 100.000 al 06/07/2012
Una volta inserita la variabile casuale time to default simulator possiamo prezzare il CDS. La
variabile casuale è necessaria per calcolare la probabilità di default neutrale al rischio e la sua
distribuzione.
Implementazione deterministica
La funzione RNDP può essere utilizzata per calcolare la probabilità di default al tempo della
dichiarazione di insolvenza. La funzione richiede una variabile casuale e il tempo fino al quale deve
essere stimata la probabilità di default (ad esempio RNDP (@v1; pd[1])).
Il Mark to Market del CDS (che sarà negativo per il venditore, il writer, del contratto derivato) sarà
uguale al valore scontato, attualizzato, della perdita derivante dal default (ovvero 1 – Recovery
Rate) moltiplicata per il capitale (Principal) N e per la probabilità di default neutrale al rischio
osservata fra pd(t) e pd(t-1) (od osservata in pd(t) per il primo periodo). Si veda anche in tal senso
la figura 5.8.
(Figura 157: CDS in Fairmat, implementazione deterministica)
163
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
Simulazione Monte Carlo
In Fairmat possiamo stimare il valore di un CDS utilizzando la simulazione dei tempi di default
Monte Carlo. Come si Il Mark to Market del CDS (negativo per il venditore, il writer, del contratto
derivato) sarà uguale alla somma dei valori attuali delle perdite derivanti dal default (ovvero 1 –
Recovery Rate) moltiplicata per il capitale (Principal) N, se occorre un default, o a zero, altrimenti,
in caso contrario. Si veda anche in tal senso la figura 5.9.
(Figura 5.9: CDS in Fairmat, Simulazione Monte Carlo)
CVA
Il Credit Value Adjustment (CVA) è un aggiustamento fatto al valore del contratto in considerazione
del rischio unilaterale di controparte. Questa è una simulazione nella quale si assume che soltanto la
una delle due parti contraenti può dichiarare default mentre viene assunto, ipotizzato, il fatto che,
dall'altra parte, dall'altro lato, l'investitore che sta effettuando il calcolo dell'aggiustamento sia
immune da rischi di insolvenza.
La formula fondamentale per la valutazione del rischio di controparte è la seguente:
E  0D (t , T )  1 2t  E 0 (t , T )  E LGD2 1t  2 T  D(t , 2 ) NPV 0 ( 2 ) 
[5.34]







D
dove E  0 (t , T ) indica il payoff per l'investitore immune dal rischio di insolvenza, τ2 indica il
tempo di default della controparte (ovvero il momento nel quale la controparte dichiara lo stato di
insolvenza), LGD indica la Loss Given Default, ovvero la perdita determinata dal default e data da
(1 – Recovery Rate), D(t , 2 ) indica il fattore di attualizzazione, o di sconto, e indica il valore del
NPV0 ( 2 )  E 2  ( 2 , T )conratto al momento del default della controparte, al momento della
dichiarazione di insolvenza della controparte.
Se non vi è nell'immediato un default, il payoff si ridurrà ad un lascito libero da problemi di
164
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
insolvenza. Nel caso in cui vi sia nell'immediato, o a breve, un default verranno ricevuti i soli
pagamenti corrisposti prima della data del default; in particolare, se occorrerà il default e il valore
residuo del contratto è positivo, allora l'investitore perderà parte di questo valore (per un valore
esattamente pari a LGD, Loss Given Default); viceversa, se il valore residuo del contratto è
negativo, allora l'investitore dovrà pagare interamente tale valore. Ecco perchè il secondo termine
del membro di destra della [5.34] viene definito CVA.
Nell'esempio riportato con le figure 5.10 e 5.11, trattiamo uno swap fisso contro variabile dove solo
il pagatore del tasso variabile è immune al rischio di insolvenza.
Una volta modellato lo swap, dal punto di vista dell'investitore immune al rischio di insolvenza,
così come mostrato nella figura 5.10, si dovrà trascinare l'operatore CVA dalla barra degli strumenti
e farlo "cadere" nell'ambiente Option Map dietro la strip di swap inserita precedentemente.
(Figura 5.10: CVA in Fairmat 1)
Poi, con un doppio click sull'operatore CVA appena creato, appena inserito, sarà possibile
specificare il tasso di recupero (campo "Recovery Rate") e le variabili casuali che simulano i tempi
di default della controparte (campo "Counterparty times to default"). Si veda anche la figura 5.11.
La valutazione così condotta ci restituirà il valore aggiustato, corretto, del contratto swap oggetto
della transazione fra le parti contraenti.
165
CAPITOLO 5 – LA MODELLAZIONE DEI CONTRATTI FINANZIARI
(Figura 5.11: CVA in Fairmat 2)
166
PARTE II
ESEMPI
E APPLICAZIONI
• TUTORIAL I
VANILLA INTEREST SWAP
• TUTORIAL II
FIXED – FLOAT CROSS CURRENCY
• TUTORIAL III
ACCRUAL SWAP
• TUTORIAL IV
PATH DEPENDENCE
• TUTORIAL V
SWAP WITH ASIAN OPTION
• TUTORIAL VI
RELOAD3 BOND
• TUTORIAL VII
CONVERTENDO BPM WITH WARRANT
TUTORIAL I
VANILLA
INTEREST
SWAP
TUTORIAL I – VANILLA INTEREST SWAP
In questo tutorial vedremo un esempio di valutazione di un Vanilla Interest Swap, ovvero un
accordo fra due parti – Parte A e Parte B – di scambio dei flussi di cassa (fisso contro variabile)
espressi nella stessa valuta. Si tratta quindi di un'operazione finanziaria caratterizzata dallo scambio
tra due parti di flussi di interesse facenti riferimento ad importi nominali (ovvero i valori dei capitali
nozionali) che non vengono trasferiti né all'inizio né alla conclusione della transazione. Inoltre, il
regolamento dei flussi di interesse fra le controparti avviene in via differenziale.
Con la tabella I.1, di seguito riportata, proponiamo la scheda tecnica del contratto derivato che
andremo ad analizzare e denominato “Plain Vanilla”:
(Tabella I.1 – Scheda tecnica contratto Plain Vanilla)
Up-Front
Capitale Parte A
Capitale Parte B
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambio
Dal 24/03/2005 al 24/03/2010
Convenzione
Date di Reset
Day Count Fraction
1.000.000,00 (Bullet)
1.000.000,00 (Amortizing)
22/03/2005
24/03/2005
24/03/2010
Annuale
Semestrale
Parte A
Parte B
Euribor a 6 Mesi
3,2165%
Parte A
Parte B
Advance,
2 giorni
30/360,
Act/360 Adjusted
Unadjusted
(Modified Following)
Dove tutte le payment dates vengono aggiustate, corrette, seguendo la convenzione Modified
Following Business Day. Osservando ancora una volta la scheda tecnica soprariportata, possiamo
osservare le principali caratteristiche del contratto:
1) la differente frequenza di pagamento per le parti: Annuale per la Parte A, Semestrale per la
Parte B;
2) le differenti caratteristiche del capitale nozionale di riferimento per le parti: per la Parte A il
nozionale è, infatti, di tipo Bullet, ovvero fisso, mentre per la Parte B il nozionale è in
Amortizing, ovvero soggetto ad ammortamento;
3) una differente Day Count Fraction per le parti: per la Parte A verrà, infatti, applicata la
convenzione 30/360 Unadjusted; mentre per la Parte B verrà, invece, applicata la
convenzione Act/360 Adjusted;
Il modo più semplice per valutare il contratto derivato Vanilla Interest Swap, prendendo come data
di riferimento per la valutazione la Trade Date (o la Valuation Date) – ovvero la Data di
Negoziazione del contratto, o la Data di Valutazione – è quello basato sui tassi di interesse forward
(a lungo termine) derivanti dalla Zero Rate Curve disponibile appunto alla Valuation Date. Con il
termine Zero Rate Curve ci riferiamo alla struttura per scadenze dei tassi di interesse; il risultato del
metodo di inferenza statistica di bootstrap parte dai tassi spot (a breve termine) disponibili sul
167
TUTORIAL I – VANILLA INTEREST SWAP
mercato (riferendosi ai valori di chiusura).
I tassi forward e i risultati del processo stocastico sottostante al contratto che andremo poi a
modellare in Fairmat, ovvero Zr, seguono il regime di interesse composto continuo.
Oltre alle informazioni recuperabili dalla scheda tecnica di cui alla tabella I.1, dovremo caricare in
un nuovo file Fairmat (.fair) anche i seguenti vector dates, riportati nel dettaglio attraverso la tabella
I.2, sottoriportata:
(Tabella I.2 – Vector dates da caricare per la valutazione del Plain Vanilla)
Nr
1
2
3
4
5
6
7
8
9
10
Payment Dates
Unadjusted
(Parte A)
24/03/2006
24/03/2007
24/03/2008
24/03/2009
24/03/2010
Payment Dates
Capitale Nozionale
Unadjusted
Parte B (Amortizing)
(Parte B)
24/09/2005
1.000.000,00
24/03/2006
900.000,00
24/09/2006
800.000,00
24/03/2007
700.000,00
24/09/2007
600.000,00
24/03/2008
500.000,00
24/09/2008
400.000,00
24/03/2009
300.000,00
24/09/2009
200.000,00
24/03/2010
100.000,00
Con la figura I.1 riepiloghiamo i dati del tutorial che dovremo inserire nell'ambiente Parameters &
Functions una volta aperto il file .fair in Fairmat.
I vettori Pda_A, Pda_B e Rd_B (Vector's Transformation) e i vettori Cvg_A e Cvg_B (Vector's
Difference Transformation) derivano dai vettori di input Pdu_A e Pdu_B utilizzando,
rispettivamente, le funzioni di conversione Date's Vector Adjustment Transformation e Date's
Vector Differences Transformation.
La prima data di reset (ovvero il primo elemento del vettore Rd_B) coincide esattamente con la
Trade Date. Dal momento che si assume che la Trade Date coincide con la Valuation Date e che i
dati di mercato si riferiscono ai valori di chiusura, alla Valuation Date (ovvero alla data del
22/03/2005) il primo valore dell'Euribor a 6 mesi è già noto, è già conosciuto, e quindi verrà trattato
come un dato storico di mercato.
168
TUTORIAL I – VANILLA INTEREST SWAP
(Figura I.1: Riepilogo dati di input del tutorial Vanilla Interest Swap)
(Figura I.2: Modellazione dei payoff delle parti contrattuali nell'ambiente Option Map)
Passando alla modellazione nell'ambiente Option Map dei payoff che ciascuna parte contrattuale è
tenuta a corrisponde all'altra in corrispondenza delle scadenze pattuite (figura I.2), i tab da
selezionare per l'editing della Single Committed Option del ramo relativo alla Parte B sono Timing
and Payoff e Discounting (figure I.3 e I.4).
169
TUTORIAL I – VANILLA INTEREST SWAP
(Figura I.3: Modellazione del payoff a carico della Parte B, Editing Single Option , tab Timing and Payoff)
(Figura I.4: Modellazione del payoff a carico della Parte B, Editing Single Option , tab Discounting)
Notiamo che il sistema Option Dependent Discounting è disponibile sia nell'editor della Single
Option che nell'editor delle Strip of Options. In particolare il sistema Option Dependent
Discounting contiene le impostazioni puntuali della struttura di discounting (di attualizzazione)
disponibile nell'ambiente Discounting in quanto esso si riferisce solo ad una specifica Single Option
o solo ad una specifica Strip of Options e alle sue opzioni conseguenti, successive.
Il sistema Option Dependent Discounting ci dà una maggiore flessibilità nella costruzione di un
progetto.
Per questo tutorial le due impostazioni (figure I.5 e I.6) sono del tutto equivalenti, ma l'ultima
170
TUTORIAL I – VANILLA INTEREST SWAP
(figura I.7) ci consente di impostare differente impostazioni della struttura di attualizzazione (di
discounting) per ciascuna Single Option o per ciascuna Strip of Options.
(Figura I.5: Impostazioni per il sistema Option Dependent Discounting 1)
(Figura I.6: Impostazioni per il sistema Option Dependent Discounting 2)
Notiamo che per l'esempio della figura I.6, le impostazioni locali devono essere impostate sia nella
Single Option 1_Party B (le quali verranno poi applicate automaticamente alla Strip of Options che
va dall'opzione 2_Party B fino all'opzione end_Party B) sia nella Strip of Options che va
dall'opzione 1_Party A fino all'opzione end_Party A.
Attraverso la figura I.7 mostriamo la successiva Strip of Options presente nel ramo relativo alla
Parte B.
(Figura I.7: Modellazione del payoff a carico della Parte B, Editing Strip of Options, tab Timing and Payoff)
171
TUTORIAL I – VANILLA INTEREST SWAP
Per calcolare i tassi forward si ricorre all'utilizzo della funzione interna di Fairmat FRA che è, come
noto, una Interest Rate Function.
Possiamo notare, osservando attentamente la finestra di autocomplete contenuta nella figura I.7 – e
come già spiegato nel corso del Capitolo 2 della Parte I – la funzione FRA calcola i tassi forward
(a lungo termine) fra due date, fra due istanti, t e d, partendo da una determinata struttura per
scadenze dei tassi di interesse Zr.
Ai fini del presente tutorial sono necessari, dobbiamo calcolare, i tassi forward a 6 mesi (ovvero con
maturità semestrale) per cui la funzione FRA calcolerà i tassi, nel caso preso in esame, attraverso la
seguente formula:
exp {zr ( Rd + matEur)∗( Rd + matEur )}
1
FRA( Rd ; (Rd + matEur); zr ref )=
−1 ∗
exp {zr( Rd )∗Rd }
matEur
dove Rd indica una generica data di reset, matEur è noto ed è pari a 0,5 (ovvero 6 mesi espressi in
termini di frazioni d'anno) e il simbolo zrref equivale a @zr.
(
)
Passando, infine, ai payoff relativi alla Parte A, possiamo affermare che questi sono piuttosto
semplici da strutturare: il capitale nozionale di riferimento per la Parte A (di tipo Bullet, ovvero
fisso) programma i tempi dei tassi swap secondo la Day Count Fractions 30/360 Unadjusted.
L'unico tab da selezionare per l'editing della Strip of Options del ramo relativo alla Parte A è Timing
and Payoff (figura I.8).
(Figura I.8: Modellazione del payoff a carico della Parte A, Editing Strip of Option s, tab Timing and Payoff)
172
TUTORIAL II
FIXED-FLOAT
CROSS
CURRENCY
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Il Cross Currency Interest Rate Swap (CCIRS) è un accordo fra due controparti – Parte A e Parte B
– di scambio di flussi di cassa (fisso contro variabile) espressi in una differente valuta. Con un
CCIRS le parti contrattuali si scambiano, quindi, dei pagamenti in base a due diverse tipologie di
tassi (da una parte il tasso fisso e dall'altra parte il tasso variabile) e a due diverse valute.
Rispetto al caso, che abbiamo precedentemente analizzato con il Tutorial I, ovvero il caso del
semplice contratto derivato Interest Rate Swap (IRS), nel caso del CCIRS abbiamo due capitali
nozionali di riferimento, espressi in due diverse valute, che verranno scambiati all'inizio e alla fine
del contratto di scambio.
Con la tabella II.1, sottoriportata, proponiamo la scheda tecnica del contratto CCIRS oggetto di
questo tutorial:
(Tabella II.1 – Scheda tecnica del Cross Currency Interest Rate Swap)
Nozionale (espresso in Dollari)
Nozionale (espresso in Euro)
Tasso di cambio EUR/USD alla Data di Negoziazione
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambio
All'inizio del contratto
Dal 01/06/2009 al 01/06/2019
Alla scadenza del contratto
Convenzione
Parte A
€ 1.428.571,43
5,00%
$2.000.000,00
Parte A
Drivers rates per le Date di reset
-
Day Count Fraction
30/360,
Unadjusted
2.000.000,00
1.428.571,43
1,4000
29/05/2009
01/06/2009
01/06/2019
Semestrale
Semestrale
Parte B
$2.000.000,00
Euribor 6 Mesi + 0,90%
€ 1.428.571,43
Parte B
Advance,
Il primo giorno
Act/360,
Unadjusted
Come possiamo evincere dalla tabella II.1, il capitale inizialmente pagato dalla controparte A è pari
a 1.428.571,43 € (EUR) a fronte di un capitale pari a 2.000.000,00 $ (USD) ricevuti dalla
controparte B. Questo scambio, calcolato sulla base del tasso di cambio Euro/Dollaro (EUR/USD)
corrente al momento dello scambio stesso, rende alla data iniziale (ovvero alla Trade Date) il
contratto finanziariamente equo.
I pagamenti aventi periodicità semestrale che la controparte A è tenuta ad effettuare sono fissi e
proporzionali ad un tasso nominale annuo del 5,00% applicato al capitale nozionale espresso in
Dollari (USD). I pagamenti aventi periodicità semestrale che la controparte B è tenuta ad effettuare
sono, invece, variabili ed indicizzati al tasso Euribor a 6 mesi rilevato all'inizio di ciascun periodo
con l'aggiunta di uno spread di 90 punti base (ovvero dello 0,90%) applicato al capitale nozionale
espresso in Euro (EUR).
La restituzione del capitale inizialmente scambiato dalle controparti contrattuali è previsto alla
scadenza mediante il pagamento di 2.000.000,00 $ (USD) da parte della controparte A e il
pagamento di 1.428.571,43 € (EUR) da parte della controparte B; in altre parole: con il contratto
CCIRS, la Parte A trasforma un capitale di debito a tasso variabile espresso in Euro, indicizzato al
173
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
tasso Euribor a 6 mesi con l'aggiunta di uno spread dello 0,90%, in un capitale di debito a tasso
fisso espresso in Dollari. Vale il viceversa per la Parte B.
Ai fini di questo tutorial e dell'analisi che dobbiamo condurre sul contratto CCIRS, possiamo
considerare la transazione appena descritta come la somma di tre strutture elementari:
1) un contratto Fixed-Float Interest Rate Swap (Interest Rate Swap Fisso contro Variabile)
denominato in USD;
2) un contratto Float-Float Cross Currency Basis Swap (Cross Currency Basis Swap Variabile
contro Variabile) con valute EUR/USD;
3) un contratto Basis Swap 3M vs 6M, il quale prevede uno scambio fra un tasso a 3 mesi
contro un tasso a 6 mesi, denominato in EUR;
Il vantaggio di questa scomposizione è che i prezzi di queste tre strutture elementari sono quotati sui
mercati ufficiali. Ciò rende la valutazione libera dai modelli relativi ai prezzi di mercato dal
momento che non dobbiamo, così facendo, ricorrere ad assunzioni riguardanti le dinamiche dei
fattori sottostanti. In altre parole si può scomporre il payoff principale – schematizzato attraverso la
tabella II.2 e la cui schematizzazione e scansione temporale dei flussi di cassa vengono basati sul
punto di vista della Parte A (per cui con il segno "+" vengono indicati i flussi di cassa positivi, in
entrata, per la stessa mentre con il segno "-" vengono indicati quelli negativi, in uscita) –, ovvero il
seguente:
(Tabella II.2 – Schematizzazione payoff principale derivante dal contratto CCIRS)
Data d'esercizio
t=0
tA = 0.25, 0.5, …, 10
tB = 0.25, 0.5, …, 10
tA = tB = 10
Scambi Parte A
-€ 1.428.571,43
-5.00%
(in USD)
-$2.000.000,00
Scambi Parte B
+$2.000.000,00
+ Euribor a 6 mesi
+ 0.90% (in Euro)
+€ 1.428.571,43
nelle tre seguenti strutture elementari:
1) Tabella II.3 (la cui schematizzazione si basa sempre sul punto di vista della Parte A): il
Fixed-Float Interest Rate Swap prevede il pagamento semestrale di un tasso fisso pari al
5,00% espresso in EUR da parte della controparte A, a fronte del pagamento trimestrale di
un tasso variabile Libor a 3 mesi espresso in USD da parte della controparte B. Il valore del
capitale nozionale della precedente struttura è pari a 2.000.000,00 USD:
(Tabella II.3 – Schematizzazione contratto Fixed-Float Interest Rate Swap)
Data d'esercizio
t=0
tA = 0.5, 1, …, 10
Scambi Parte A
-5.00%
(in Euro)
tB = 0.25, 0.5, …, 10
-
tA = tB = 10
-
174
Scambi Parte B
+ Libor a 3 mesi
(in USD)
-
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
2) Tabella II.4 (la cui schematizzazione si basa sempre sul punto di vista della Parte A): il
Float-Float Cross Currency Basis Swap prevede il pagamento di un tasso variabile Libor a 3
mesi espresso in USD da parte della controparte A, calcolato su un capitale nozionale di
riferimento di 2.000.000,00 $, a fronte del pagamento di un tasso variabile Euribor a 3 mesi
espresso in EUR da parte della controparte B, calcolato su un capitale nozionale di
riferimento di 1.428.571,43 €:
(Tabella II.4 – Schematizzazione contratto Float-Float Cross Currency Basis Swap)
Data d'esercizio
t=0
tA = 0.5, 1, …, 10
tB = 0.25, 0.5, …, 10
tA = tB = 10
Scambi Parte A
-€ 1.428.571,43
-Libor a 3 mesi
(in USD)
-$2.000.000,00
Scambi Parte B
+$2.000.000,00
+ Euribor a 3 mesi
(in Euro)
+€ 1.428.571,43
3) Tabella II.5 (la cui schematizzazione si basa sempre sul punto di vista della Parte A): il
Basis Swap 3M vs 6M prevede il pagamento di un tasso variabile Euribor a 3 mesi espresso
in EUR da parte della controparte A, a fronte del pagamento di un tasso variabile Euribor a 6
mesi espresso in EUR, con l'aggiunta di uno spread di 90 punti base, da parte della
controparte B. Il valore del capitale nozionale della precedente struttura è pari a
1.428.571,43 €:
(Tabella II.5 - Schematizzazione contratto Basis Swap 3M vs 6M)
Data d'esercizio
t=0
tA = 0.5, 1, …, 10
tB = 0.25, 0.5, …, 10
tA = tB = 10
Scambi Parte A
-Euribor a 3 mesi
(in Euro)
-
Scambi Parte B
+ Euribor a 6 mesi
+ 0.90% (in Euro)
-
Il modo più semplice per valutare queste tre strutture elementari, ad esempio basandosi sulla Trade
Date – ovvero la Data di Negoziazione – è attraverso la determinazione dei tassi di interesse
forward (a lungo termine) derivanti dalla zero rates curve (la struttura per scadenze dei tassi di
interesse) disponibile a quella data.
175
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Implementazione con Fairmat
Con la Tabella II.6, sottoriportata, riproponiamo ancora una volta la scheda tecnica, già mostrata in
precedenza con la tabella II.1, in termini però diversi, ovvero in termini parametrici, ossia
ricorrendo all'utilizzo degli oggetti disponibili nell'ambiente Parameters & Functions:
(Tabella II.6 – Scheda tecnica del CCIRS riproposta in termini parametrici)
Nozionale (espresso in Dollari)
Nozionale (espresso in Euro)
Tasso di cambio EUR/USD alla Data di Negoziazione
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambio
All'inizio del contratto
N_D
N_F
FxSpot
Valuation Date
Effective Date
Pdu_6M [end] o Pdu_3M [end]
Matfl_3M
Matfl_6M
Parte A
Parte B
N_F
N_D
EUR Euribor Matfl_6M +
Spread
Fix
N_D
N_F
Parte A
Parte B
Reset type =Advance,
Add/Sub Days = Rday
Cvg_6M_30360
Cvg_6M_Ac360
Dal 01/06/2009 al 01/06/2019
Alla scadenza del contratto
Convenzione
Drivers rates per le Date di reset
Day Count Fraction
Con la tabella II.7 riproponiamo, invece, nel dettaglio i dati contenuti nei vector dates Pdu_6M e
Pdu_3M, i quali contengono le date di scadenza semestrale (6M) e trimestrale (3M) non corrette,
non aggiustate, che costituiranno le date di partenza per la modellazione delle strutture elementari
fin qui descritte.
(Tabella II.7 – Vector dates Pdu_6M e Pdu_3M)
#
1
2
3
…
…
18
19
20
21
22
23
…
…
37
38
39
40
Pdu_6M
01/12/2009
01/06/2010
01/12/2010
…
…
01/06/2018
01/12/2018
01/06/2019
176
Pdu_3M
01/09/2009
01/12/2009
01/03/2010
…
…
01/12/2013
01/03/2014
01/06/2014
01/09/2014
01/12/2014
01/03/2015
…
…
01/09/2018
01/12/2018
01/03/2019
01/06/2019
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Di seguito, con le tabelle II.8, II.9 e II.10, proponiamo la scomposizione dei payoff principali dei tre
prodotti elementari delineati precedentemente ai fini del pricing del CCIRS:
(Tabella II.8 – Schematizzazione payoff principale del contratto Fixed-Float Interest Rate Swap)
Parte 1: Fixed-Float Interest Rate Swap (USD)
Nozionale (espresso in Dollari)
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambio
Da 1 fino a Pdu_6M [end] o Pdu_3M [end]
Convenzione
N_D
Valuation Date
Effective Date
Pdu_6M [end] o Pdu_3M [end]
Matfl_6M
Matfl_3M
Parte A
Parte B
Fix
USD Libor Matfl_3M
Parte A
Parte B
Reset type =Advance,
Add/Sub Days = Rday
Cvg_6M_30360
Cvg_6M_Ac360
Drivers rates per le Date di reset
Day Count Fraction
(Tabella II.9 – Schematizzazione payoff principale del contratto Float-Float Cross Curreny Swap)
Parte 2: Float-Float Cross Currency Basis Swap (USD)
Nozionale (espresso in Dollari)
N_D
Nozionale (espresso in Euro)
N_F
Tasso di cambio EUR/USD alla Data di Negoziazione
FxSpot
Data Negoziazione
Valuation Date
Data Inizio Contratto
Effective Date
Data di Scadenza
Pdu_3M [end]
Frequenza di pagamento Parte A
Matfl_3M
Frequenza di pagamento Parte B
Matfl_3M
Scambio
Parte A
Parte B
Da 1 fino a Pdu_3M [end] o Pdu_3M [end]
USD Libor Matfl_3M
EUR Libor Matfl_3M
Pdu_3M [end]
N_D
N_F
Convenzione
Parte A
Parte B
Reset type = Advance,
Reset type =Advance,
Drivers rates per le Date di reset
Add/Sub Days = Rday
Add/Sub Days = Rday
Day Count Fraction
Cvg_3M_Ac360
Cvg_3M_Ac360
177
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Tabella II.10 – Schematizzazione payoff principale del contratto Basis Swap 3M vs 6M)
Parte 3: Basis Swap 3M vs 6M (EUR)
Nozionale (espresso in Euro)
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambio
N_F
Valuation Date
Effective Date
Pdu_6M [end] o Pdu_3M [end]
Matfl_3M
Matfl_6M
Parte A
Parte B
EUR Euribor Matfl_6M +
EUR Euribor Matfl_3M
Spread
Parte A
Parte B
Reset type =Advance,
Reset type =Advance,
Add/Sub Days = Rday
Add/Sub Days = Rday
Cvg_3M_Ac360
Cvg_6M_Ac360
Da 1 fino a Pdu_6M [end]
Convenzione
Drivers rates per le Date di reset
Day Count Fraction
Dati di input e loro inserimento
A questo punto dobbiamo riepilogare, attraverso tabella II.11, ordinandoli per categoria, i dati di
input, che poi dovremo inserire nell'ambiente Parameters & Functions, alcuni dei quali si
riferiscono in generale ad entrambe le controparti contrattuali, mentre altri, invece, si riferiscono
solo ad una specifica controparte:
(Tabella II.11 – Riepilogo e descrizione dati di input Tutorial Fixed-Float Cross Currency)
NOME
TIPO DI DATO
CATEGORIA
N_D
Scalar
Parametro
N_F
Scalar
Parametro
FxSpot
Scalar
Parametro
Matfl_3M
Scalar
Parametro
Rday
Scalar
Parametro
Date Sequence
Parametro
Pdu_6M
178
DESCRIZIONE
Indica l'ammontare del nozionale del derivato
espresso nella valuta domestica (USD)
Indica l'ammontare del nozionale del derivato
espresso nella valuta estera (EUR)
Indica il tasso di cambio alla Valuation Date
(ovvero alla Trade Date). Si riferisce al tasso di
cambio della valuta domestica contro la valuta
estera
Rappresenta la scadenza del tasso variabile
espressa in frazioni d'anno (per cui 0,25
equivale a 3 mesi)
Indica il numero di giorni da aggiungere (o
sottrarre) alle Date di Reset
Rappresenta il vettore delle date di pagamento
non aggiustate, non corrette (con frequenza pari
a Matfl_6M, ovvero semestrale)
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Tabella II.11 – Riepilogo e descrizione dati di input Tutorial Fixed-Float Cross Currency)
NOME
Pdu_3M
TIPO DI DATO
Date Sequence
CATEGORIA
Parametro
Pda_6M
Date Vector
Adjustment
Parametro
Pda_3M
Date Vector
Adjustment
Parametro
Rd_3M
Date Vector
Adjustment
Parametro
Cvg_6M_
Ac360
Date Vector
Differences
Calculator
Parametro
ZrDisc_D
ZrDisc_F
ZrDisc_F_
E3
Fix
Funzione
Interpolante
Funzione
Interpolante
Funzione
Interpolante
Scalar
Parametro
Parametro
Parametro
Parte A
Date Vector
Differences
Calculator
Parte A
Spread
Scalar
Parte B
Matfl_6M
Scalar
Parte B
Date Vector
Adjustment
Parte B
Cvg_6M_
30360
Rd_6M
179
DESCRIZIONE
Rappresenta il vettore delle date di pagamento
non aggiustate, non corrette (con frequenza pari
a Matfl_3M, ovvero trimestrale)
Rappresenta il vettore delle date di pagamento
derivante dal vettore Pdu_6M, aggiustate,
corrette per la Modified Following Date
Rolling Convention
Rappresenta il vettore delle date di pagamento
derivante dal vettore Pdu_3M, aggiustate,
corrette per la Modified Following Date
Rolling Convention
Date's Vector Transformation derivante dal
vettore Pdu_3M utilizzando l'oggetto Rday. Il
Reset Type da impostare è di tipo Advance
Date's Vector Differences Transformation
derivante dal vettore Pdu_6M selezionando
l'oggetto Actual360 nel menù a tendina “Day
Count Convention” e l'oggetto Unadjusted nel
menù a tendina “Date Rolling Convention”
Rappresenta la curva di sconto del mercato
domestico
Rappresenta la curva di sconto del mercato
estero
Rappresenta la curva di sconto del mercato
estero per i tassi Euribor a 3 Mesi
Indica il tasso fisso del Cross Currency
Date's Vector Differences Transformation
derivante dal vettore Pdu_6M selezionando
l'oggetto Thirty360 nel menù a tendina “Day
Count Convention” e l'oggetto Unadjusted nel
menù a tendina “Date Rolling Convention”
Indica la componente positiva da aggiungere al
tasso variabile
Rappresenta la scadenza del tasso variabile
espressa in frazioni d'anno (per cui 0,5 equivale
a 6 mesi)
Date's Vector Transformation derivante dal
vettore Pdu_6M utilizzando l'oggetto Rday. Il
Reset Type da impostare è di tipo Advance
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Tabella II.11 – Riepilogo e descrizione dati di input Tutorial Fixed-Float Cross Currency)
NOME
TIPO DI DATO
CATEGORIA
DESCRIZIONE
Cvg_3M_
Ac360
Date Vector
Differences
Calculator
Parte B
Date's Vector Differences Transformation
derivante dal vettore Pdu_3M selezionando
l'oggetto Actual360 nel menù a tendina “Day
Count Convention” e l'oggetto Unadjusted nel
menù a tendina “Date Rolling Convention”
Fswap
Funzione
Interpolante
Parte B
Indica il tasso swap utilizzato per la
determinazione della curva di sconto estera
A questo punto dovremo aprire un nuovo progetto in Fairmat.
Selezionando il percorso Settings → Project Preferences → Tab Simulation Dates and Conventions
possiamo specificare la Valuation Date e la Effective Date. In questo caso dovremo, in particolare,
impostare la Valuation Date uguale alla Trade Date (e quindi corrispondente alla data del
29/05/2009).
Con la figura II.1 vediamo come apparirà l'ambiente Parameters & Functions una volta che
abbiamo provveduto ad inserire in esso tutti gli oggetti necessari alla modellazione del contratto
CCIRS.
(Figura II.1: Riepilogo oggetti dell'ambiente Parameters & Functions necessari per la modellazione del
CCIRS)
180
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Per questo tutorial utilizzeremo il plug-in Plain Vanilla. Qualora esso non sia già disponibile nella
versione installata è possibile scaricarlo (o semplicemente aggiornarlo) dal sito web di Fairmat
selezionando il seguente percorso: Settings → Plug-Ins Management e quindi utilizzando il PlugIns Management (figura II.2).
(Figura II.2: Plug-In Plain Vanilla, Ambiente Plug-Ins Management, tab Available Online Plug-Ins)
Una volta che il plug-in Plain Vanilla è stato installato, una nuova tavolozza di icone apparirà
vicino alla solita tavolozza Option Map e che è la seguente:
Il prossimo passo consiste nel preparare correttamente le impostazioni relative al sistema di
attualizzazione (o di discounting) globale, ovvero riferito al progetto nel suo complesso.
Nell'esempio di questo tutorial utilizzeremo i tassi forward e i fattori di sconto saranno determinati
attraverso un'espressione deterministica. I tassi sono di tipo composto continuo per cui la funzione
dei fattori di sconto sarà una funzione esponenziale collegata alla curva di sconto del mercato
domestico ricordandoci che nell'esempio di questo tutorial il mercato domestico di riferimento è
quello americano (figura II.3).
Infine, dal momento che il pricing non è ancorato ad alcun tipo di modello finanziario, dovremo
impostare il Numerical Method cambiando, modificando la valorizzazione del relativo campo, da
Simulation ad Analytic Solution. Il percorso da selezionare è Setting → Numerical Method.
181
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Figura II.3: Impostazione del sistema di discounting del progetto)
Siamo ora pronti per costruire gli strumenti finanziari finora descritti nell'ambiente Option Map.
Con la figura II.4 mostraimo il contratto CCIRS, come la somma di tre derivati di base elementari,
ovvero come la somma di:
1) un Fixed-Float Interest Rate Swap (IRS Fisso contro Variabile);
2) un Float-Float Cross Currency Basis Swap (Cross Currency Basis Swap Variabile contro
Variabile); e
3) un Basis Swap 3M vs 6M (Basis Swap 3 Mesi contro 6 Mesi);
(Figura II.4: Modellazione nell'ambiente Option Map del contratto CCIRS)
182
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Fixed-Float Interest Rate Swap
Il contratto Fixed-Float Interest Rate Swap (ovvero Fisso contro Variabile) consta di una parte fissa
(rappresentata dal blocco –FIX_6M_D) corrisposta dalla Parte A con frequenza semestrale (e quindi
con frequenza pari a @Pda_6M) con date rolling convention 30/360, e di una parte variabile
(rappresentata dal blocco L3_3M_D) ricevuta dalla Parte A su base trimestrale (e quindi con
frequenza pari a @Pda_3M) con date rolling convention Actual/360.
L'ammontare del capitale nozionale di riferimento è espresso in dollari ed è dato dal valore
dell'oggetto N_D.
Per la costruzione del blocco –FIX_6M_D (figura II.5) dobbiamo compilare il solo tab Contract
Specification, mentre per la costruzione del blocco L3_3M_D (figura II.6) dovremo compilare,
oltre al tab Contract Specification, anche il tab Market Data.
Notiamo che la Forwarding Curve è la stessa Discounting Curve utilizzata per il global discounting
del progetto. L'operatore funzionale (IRS-FXFL-USD) è costituito dalla somma dei due blocchi dati
i segni impostati correttamente (ovvero impostando l'operazione algebrica -x1 + x2 – figura II.7).
(Figura II.5: Editing blocco –FIX_6M_D del Fixed-Float Interest Rate Swap)
183
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Figura II.6: Editing blocco L3_3M_D del Fixed-Float Interest Rate Swap)
(Figura II.7: Editing operatore funzionale Function del Fixed-Float Interest Rate Swap)
184
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Float-Float Cross Currency Basis Swap
Il contratto Float-Float Cross Currency Basis Swap (ovvero Variabile contro Variabile) è costituito
da due parti variabili. La prima (rappresentata dal blocco –L3_3M_D) corrisposta dalla Parte A, è
esattamente la medesima che la Parte A riceve sul contratto Fixed-Float Interest Rate Swap, che
abbiamo visto in precedenza, con l'eccezione legata al pagamento dell'ammontare del capitale
nozionale (pari a 2.000.000,00 USD) alla scadenza; la seconda (rappresentata dal blocco
E3_3M_EUR_F) viene ricevuta dalla Parte A con frequenza trimestrale (e quindi con frequenza pari
a @Pda_3M) con date rolling convention Actual/360 ed è collegata al mercato europeo.
L'ammontare del capitale nozionale di riferimento è espresso in euro ed è dato dal valore
dell'oggetto N_F. La Forwardind Curve si riferisce, quindi, al mercato europeo. Alla scadenza,
ciascuna controparte paga l'ammontare del capitale nozionale (espresso in euro).
Sia per la costruzione del blocco –L3_3M_D che per la costruzione del blocco E3_3M_EUR_F
dovremo compilare sia il tab Contract Specification che il tab Market Data (figure II.8 e II.9).
Si noti che si stiamo utilizzando differenti strutture per scadenze dei tassi di interesse per stime di
mercato coerenti dei fattori di sconto e dei tassi forward aventi differenti regimi di tasso sottostanti
(quali ad esempio, l'Euribor a 3 mesi, l'Euribor a 6 mesi, ecc.). Per il calcolo dei tassi forward
ricorreremo, infatti, ad una yield curve diversa (ZrDisc_F_E3) rispetto a quella utilizzata per il
calcolo dei tassi forward Euribor a 6 mesi espressi in euro (ZrDisc_F).
(Figura II.8: Editing blocco –L3_3M_D del Float-Float Cross Currency Basis Swap)
185
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Figura II.9: Editing blocco E3_3M_EUR_F del Float-Float Cross Currency Basis Swap)
Le funzioni interpolanti CCBS_Spread e Fswap rappresentano, rispettivamente, lo spread base del
Cross Currency e la struttura per scadenze dei tassi swap sul mercato estero.
Utilizziamo questi oggetti al fine di effettuare correttamente la valutazione basata sulle curve di
sconto modificate, corrette, così come descritto e suggerito nell'articolo di W. Boenkost e M.W.
Schmidt intitolato "Cross Currency Swap Valuation" del Novembre 2004, edito presso la Hfb
School of Finance & Management.
Notiamo che gli scambi iniziali degli ammontari dei nozionali fra le controparti vengono omessi e
che N_F è esattamente pari a N_D moltiplicato per FxSpot.
L'operatore funzionale (CC-FLFL-EURUSD) è costituito dalla somma dei due blocchi dati i segni
impostati correttamente. Il blocco E3_3M_EUR_F restituisce un ammontare in euro che verrà poi
convertito in dollari (l'operatore algebrico da impostare è pertanto -x1 + x2*FxSpot – figura II.10).
(Figura II.10: Editing operatore funzionale Function del Float-Float Cross Currency Basis Swap)
186
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
Basis Swap 3M vs 6M
Il Basis Swap 3M vs 6M consta di due parti variabili. La prima (rappresentata dal blocco –
E3_3M_F) viene corrisposta dalla Parte A con frequenza trimestrale (e quindi con frequenza pari a
@Pda_3M); la seconda (rappresentata dal blocco (E6+spread)_6M_F) viene ricevuta dalla Parte A
con frequenza semestrale (e quindi con frequenza pari a @Pda_6M). L'ammontare del capitale
nozionale di riferimento è espresso in euro e corrisponde a N_F = N_D/FxSpot e la date rolling
convention applicata è Actual360.
Sia per la costruzione del blocco –E3_3M_F che per la costruzione del blocco (E6+spread)_6M_F
dovremo compilare, oltre ai tabs Contract Specification e Market Data, anche il tab Custom
Discounting (figure II.11 e II.12), in quanto entrambi i blocchi del contratto Basis Swap 3M vs 6M
si riferiscono al capitale nozionale denominato in euro per cui dovremo anche specificare un fattore
di sconto collegato al mercato europeo (e quindi estero nell'esempio perchè ricordiamoci sempre
che in questo caso consideriamo domestico il mercato americano) piuttosto che a quello americano.
(Figura II.11: Editing blocco –E3_3M_F del Basis Swap 3M vs 6M)
187
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
(Figura II.12: Editing blocco (E6+spread)_6M_F del Basis Swap 3M vs 6M)
188
TUTORIAL II – FIXED FLOAT CROSS CURRENCY
L'operatore funzionale (BS-FLFL-EUR) è costituito dalla somma dei due blocchi dati i segni
impostati correttamente. Entrambi i blocchi si riferiscono ad un nozionale espresso in euro, per cui
il valore attuale dovrà essere convertito in dollari (l'operatore algebrico da impostare è pertanto (-x1
+ x2)*FxSpot – figura II.13).
(Figura II.13: Editing operatore funzionale Function del Basis Swap 3M vs 6M)
189
TUTORIAL III
ACCRUAL
SWAP
TUTORIAL III – ACCRUAL SWAP
La clausola Range Accrual (letteralmente, clausola di "intervallo di accumulazione") è una generica
forma di accumulazione degli interessi nella quale il tasso di interesse cedolare viene guadagnato
solo sui giorni nei quali esso ricade entro uno specificato range, o intervallo.
Nel contratto Accrual Swap il pagamento degli interessi viene effettuato qualora il tasso di interesse
di riferimento, quale ad esempio il tasso Euribor o il tasso Libor, sia superiore o inferiore rispetto ad
un certo livello.
La ragione principale per la quale un soggetto sottoscrive questa tipologia di contratto derivato è
dovuta al tentativo di ottenere un tasso di interesse fisso più basso mediante l'assunzione del rischio
che il tasso di riferimento cada al di fuori del range (o intervallo) concordato.
Descrizione
La clausola Range Accrual è una generica forma di accumulazione degli interessi nella quale il
tasso di interesse cedolare (denominato Rate) viene guadagnato solo sui giorni nei quali un altro
tasso di interesse, dal quale il tasso di interesse cedolare deriva (denominato Driver), ricade entro
uno specificato range, o intervallo.
L'espressione matematica che permette di sintetizzare il concetto appena espresso è la seguente:
N
1
Coupon j= ∑ Ratei
per j = 1, 2, ... , M
[III.1]
N i =1
dove Ratei viene definita come una funzione dei Driveri e quindi attraverso la seguente:
Rate i=ValInf se Driveri ≤EstrInf
[III.2]
Rate i= Ratei
se EstrInf < Driveri ≤EstrSup
Rate i=ValSup se Driveri ≥EstrSup
dove N indica il numero dei giorni inclusi in ciascun periodo di calcolo M; EstrInf e EstrSup
indicano, rispettivamente, l'estremo inferiore e l'estremo superiore dell'intervallo concordato e di
riferimento (ovvero il range); Driveri indica il tasso di interesse di riferimento, ovvero il Driver
Rate, la cui fluttuazione può essere al di sopra dell'estremo superiore (EstrSup), al di sotto
dell'estremo inferiore (EstrInf) oppure fra i due estremi dell'intervallo concordato e di riferimento;
Ratei indica l'accumulazione dell'interesse e può essere esso stesso un estremo inferiore o un
estremo superiore. L'indice i sta a significare che la rilevazione del Driver Rate, i cui movimenti
definiscono il tasso Rate, viene effettuata giorno per giorno per i giorni inclusi in ciascun periodo di
calcolo.
Per cui per valutare questo strumento derivato dobbiamo simulare l'evoluzione del Driver Rate per
gli N i-giorni inclusi in ciascun periodo di calcolo M. Come avremo modo di vedere più avanti, ciò
potrebbe essere fatto attraverso la funzione incorporata di Fairmat IMean.
{
190
TUTORIAL III – ACCRUAL SWAP
Con la tabella III.1, sottoriportata, possiamo vedere la scheda tecnica del contratto Accrual Swap
oggetto di questo tutorial:
(Tabella III.1 - Scheda tecnica dell'Accrual Swap)
Nozionale
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambi
€ 4.500.000,00
16/06/2010
27/06/2010
27/06/2015
Semestrale
Semestrale
Parte A
Parte B
Primo anno
se Eur6M < 2,50%
altrimenti
2,50% - 0,30%
Eur6M - 0,30%
Secondo anno
se Eur6M < 3,50%
altrimenti
3,50% - 0,30%
Eur6M - 0,30%
Terzo anno
se Eur6M < 4,50%
altrimenti
4,50% - 0,30%
Eur6M - 0,30%
Convenzione
Date di Reset
Day Count Fraction
Parte A
Arrears, 2 giorni
Act/360, Unadjusted
Somma da i = 1 fino a N
Rate(i) + 0,50%
Dove Rate(i) è definito come:
se Eur6M < 0,10%
0,00%
Se 0,10% <= Eur6M <= 4,70%
Eur6M (i)
altrimenti
0,50%
se Eur6M < 0,20%
0,00%
se 0,20% <= Eur6M <= 4,80%
Eur6M (i)
altrimenti
0,50%
se Eur6M < 0,30%
0,00%
Se 0,30% <= Eur6M <= 5,20%
Eur6M (i)
altrimenti
0,50%
N = numero di giorni di ciascun periodo
Parte B
L'i-esimo giorno
30/360, Unadjusted
In questo tutorial mostreremo un (semplice) esempio di contratto Accrual Swap nel quale il tasso
variabile è condizionato dal numero di giorni nei quali il tasso Euribor (ovvero il tasso di
riferimento) si trova ricompreso entro un range, un intervallo, concordato durante un periodo
predefinito.
La ragione principale per la quale un soggetto sottoscrive questa tipologia di contratto derivato è
dovuta al tentativo di ottenere un tasso di interesse fisso più basso assumendosi il rischio che il
tasso di riferimento cada al di fuori del range (o intervallo) concordato.
Le formule generali, descritte sopra attraverso la [III.1] e la [III.2], vengono in questa sede
semplificate dal momento che Drivers e Rate coincidono e sono pari al tasso Euribor a 6 mesi, sono
equivalenti al tasso Euribor a 6 mesi, il quale costituisce il tasso di riferimento del contratto Range
Accrual.
191
TUTORIAL III – ACCRUAL SWAP
Implementazione con Fairmat
Con la tabella III.2, sottoriportata, riproponiamo la scheda tecnica del contratto Accrual Swap, già
proposta con la precedente tabella III.1, in termini però diversi, ovvero in termini parametrici e
quindi utilizzando gli oggetti disponibili nell'ambiente Parameters & Functions.
(Tabella III.2 - Scheda tecnica dell'Accrual Swap)
Nozionale
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambi
N
Valuation Date
Effective Date
Pda[end]
Matfl
Matfl
Parte A
Parte B
Da 1 fino a Pda [end]
Somma da i = 1 fino a N
Dove Rate(i) è definito come:
se Eur Matfl < TassoSoglia
altrimenti
TassoSoglia – Spd
EurMatf – Spd
Funzione Convertible
se Eur Matfl < Estr. Inf.
se Estr. Inf <= Eur Matfl <= Estr. Sup.
altrimenti
Rate(i) + Add
Estr. Inf.
Eur Matfl (i)
Estr. Sup.
Funzione Range Accrual
N = numero di giorni di ciascun periodo
Convenzione
Date di Reset
Day Count Fraction
Parte A
Reset type: Arrears
Add/Sub Days: Rday
Cvg_A
Parte B
all'interno della funzione incorporata IMean
Cvg_B
Da questa riprosizione della scheda tecnica possiamo notare l'esplicazione di due diverse funzioni
create dall'utente: Convertible e Range Accrual.
In base alla funzione creata dall'utente Convertible se – nel periodo che va dall'Effective Date a
Pda[end], ovvero alla scadenza – il tasso Euribor a 6 mesi risulta inferiore al TassoSoglia definito
contrattualmente allora la Parte A dovrà corrispondere un tasso di interesse pari a TassoSoglia – Spd
(ovvero meno lo Spread); altrimenti dovrà corrispondere un tasso di interesse pari all'Euribor a 6
mesi meno lo Spread (ovvero EurMatfl – Spd).
In base alla funzione create dall'utente RangeAccrual, invece, se – nel periodo che va dall'Effective
Date a Pda[end], ovvero alla scadenza – il tasso Euribor a 6 mesi risulta inferiore rispetto a EstrInf,
ovvero inferiore rispetto all'estremo inferiore del range concordato, la Parte B dovrà corrispondere
un tasso pari proprio a EstrInf; se il tasso Euribor a 6 mesi risulta compreso fra EstrInf e EstrSup,
ovvero fra i due estremi del range concordato, e quindi risulta compreso fra l'estremo inferiore e
quello superiore dell'intervallo concordato, la Parte B corrisponderà un tasso pari a EurMatfl,
ovvero pari allo stesso Euribor a 6 mesi; altrimenti, ovvero qualora il tasso Euribor a 6 mesi risulti
superiore rispetto a EstrSup, ovvero superiore rispetto all'estremo superiore del range concordato, la
Parte B dovrà corrispondere un tasso pari proprio a EstrSup.
192
TUTORIAL III – ACCRUAL SWAP
Ritornando alle formule descritte in precedenza, ovvero quelle descritte attraverso la [III.1] e la
[III.2], la clausola Range Accrual – la quale rappresenta il payoff per la Parte B – può essere quindi
riespressa anche come segue:
N
1
Coupon j= ∑ Ratei
per j = 1, 2, ..., 10
[III.3]
N i =1
mentre Ratei può essere ridefinita come una funzione dei tassi Euribor a 6 mesi con data di reset
corrispondente all'i-esimo giorno di ciascuna semestralità. Per cui possiamo riscrivere la [III.2]
come segue:
Rate i=0,00 %
se Euribor 6 Mesi i≤EstrInf
[III.4]
Rate i=Euribor 6 Mesi i se EstrInf < Euribor 6 Mesi i≤EstrSup
Rate i=0,50 %
se Euribor 6 Mesi i≥EstrSup
Il payoff relativo alla Parte A, invece, può essere definito come una funzione di due scenari ancora
una volta definiti dal valore del tasso Euribor a 6 mesi ma rilevato semestralmente due giorni prima
della fine del periodo di rilevazione (si parla anche della cosidetta fixing convention definita
Arrears, 2 giorni lavorativi).
{
Con la tabella III.3, sottoriporata, mostriamo, nel dettaglio, le date contenute nei vector dates Pdu e
Sdu e i corrispondenti valori del tasso di interesse soglia – rappresentato dall'oggetto TassoSoglia –
di riferimento per la Parte A, e dell'estremo inferiore (EstrInf) e dell'estremo superiore (EstrSup) del
Range Accrual di riferimento invece per la Parte B.
(Tabella III.3 – Vector Dates Pdu e Sdu e corrispondenti tassi di interesse soglia)
#
Pdu
1
2
3
4
5
6
7
8
9
10
27/12/2010
27/06/2011
27/12/2011
27/06/2012
27/12/2012
27/06/2013
27/12/2013
27/06/2014
27/12/2014
27/06/2015
TassoSoglia
Parte A
2,50%
2,50%
3,50%
3,50%
4,50%
4,50%
4,50%
4,50%
4,50%
4,50%
Sdu
27/06/2010
27/12/2010
27/06/2011
27/12/2011
27/06/2012
27/12/2012
27/06/2013
27/12/2013
27/06/2014
27/12/2014
Estr. Inf.
Parte B
0,10%
0,10%
0,20%
0,20%
0,30%
0,30%
0,30%
0,30%
0,30%
0,30%
Estr. Sup.
Parte B
4,70%
4,70%
4,80%
4,80%
5,20%
5,20%
5,20%
5,20%
5,20%
5,20%
Per modellare il contratto Accrual Swap dobbiamo, innanzitutto, aprire in Fairmat un nuovo
progetto vuoto (New Empty Project). Selezionando il percorso Settings → Project Preferences →
Tab Simulation Dates and Conventions è possibile specificare la Valuation Date (ovvero la data di
valutazione) e la Effective Date (ovvero la data di inizio contratto).
Dopo di chè dovremo entrare nell'ambiente Parameters & Functions nel quale sarà possibile
inserire gli oggetti necessari per la modellazione del contratto, alcuni dei quali si riferiscono ad
entrambe le controparti contrattuali mentre altri si riferiscono soltanto ad una specifica controparte.
Attraverso la tabella III.4, riportata alla pagina successiva, andiamo a riepilogare, ordinandoli per
categoria, i dati di input di questo tutorial, e che dovremo inserire nell'ambiente Parameters &
Functions, appunto.
193
TUTORIAL III – ACCRUAL SWAP
(Tabella III.4 - Riepilogo e descrizione dati di input Tutorial Accrual Swap)
NOME
TIPO DI DATO
CATEGORIA
Scalar
Parametro
Pdu
Date Sequence
Parametro
Pda
Date Vector
Adjustment
Parametro
Matfl
Scalar
Parametro
ZrDisc
Funzione
interpolante
Parametro
Rday
Scalar
Parte A
Rd
Date Vector
Adjustment
Parte A
Cvg_A
Date's Vector
Differences
Calculator
Parte A
TassoSoglia
Vector
Parte A
Spd
Scalar
Parte A
Funzione analitica
Parte A
Scalar
Parte B
N
Convertible
Add
DESCRIZIONE
Indica l'ammontare del capitale nozionale del
contratto
E' il vettore delle date di pagamento (non
corrette, ovvero unadjusted)
E' il vettore delle date di pagamento ottenuto a
partire dal vettore Pdu aggiustando le date per
la Modified Following Date Rolling
Convention
Indica la scadenza del tasso variabile espressa
in frazioni d'anno (per cui 0,5 equivale a 6 mesi)
Rappresenta la curva di sconto
Indica il numero di giorni da sottrarre alle date
di reset
Date's Vector Transformation ottenuta a partire
dal vettore Pdu utilizzando l'oggetto Rday e
selezionando Preceding come Date Rolling
Convention. Il Reset type da impostare è
Arrears
Date's Vector Differences Transformation
ottenuta a partire dal vettore Pdu selezionando
l'oggetto Actual360 nel menù a tendina “Day
Count Convention” e l'oggetto Unadjusted nel
menù a tendina “Date Rolling Convention”
Indica la soglia oltre la quale il tasso applicato
alla Parte A varia convertendosi da fisso
(sottratto lo Spread) a variabile (sottratto lo
Spread)
Indica la componente negativa da sommare
algebricamente al tasso fisso o variabile. Viene
utilizzato nella funzione definita dall'utente
Convertible
E' la funzione definita dall'utente che esprime il
payoff della Parte A. In particolare, se il tasso
di interesse è inferiore al TassoSoglia, la Parte
A pagherà un tasso fisso, ovvero il TassoSoglia
sottratto lo Spread Spd, altrimenti la Parte A
pagherà un tasso variabile, ovvero il tasso
Euribor a 6 mesi sottratto lo Spread Spd
Indica la componente positiva fissa da
aggiungere algebricamente al tasso variabile
applicato alla Parte B
194
TUTORIAL III – ACCRUAL SWAP
(Tabella III.4 - Riepilogo e descrizione dati di input Tutorial Accrual Swap)
NOME
Sdu
TIPO DI DATO
CATEGORIA
Date Sequence
Parte B
Estr.Inf.B
Vettore
Parte B
Estr.Sup.B
Vettore
Parte B
Valnf
Scalar
Parte B
ValSup
Scalar
Parte B
RangeAccrual
Cvg_B
Funzione analitica
Date's Vector
Differences
Calculator
DESCRIZIONE
E' il vettore delle date di pagamento (non
corrette, ovvero unadjusted). Include la
Effective Date ed esclude l'ultima data di
pagamento (ovvero Pdu[end]). Tale vettore ha
la stessa dimensione del vettore Pdu e viene
utilizzato come argomento dell'Interval Function
IMean
Indica l'estremo inferiore della funzione definita
dall'utente RangeAccrual
Indica l'estremo superiore della funzione definita
dall'utente RangeAccrual
Indica il valore della funzione definita dall'utente
RangeAccrual nel caso di rilevamento del tasso
variabile inferiore rispetto all'estremo inferiore
dell'intervallo concordato (ovvero inferiore
rispetto a Estr.Inf.B)
Indica il valore della funzione definita dall'utente
RangeAccrual nel caso di rilevamento del tasso
variabile superiore rispetto all'estremo superiore
dell'intervallo concordato (ovvero superiore
rispetto a Estr.Sup.B)
E' la funzione definita dall'utente che esprime il
payoff della Parte B. In particolare, tale
funzione definisce il tasso Ratei nel caso in cui il
tasso Euribor a 6 mesi (il quale viene espresso
attraverso un processo stocastico) si muova al
di sopra dell'estremo superiore dell'intervallo
concordato o al di sotto dell'estremo inferiore
dell'intervallo concordato. Si noti che la
funzione RangeAccrual verrà richiamata entro
la funzione incorporata IMean
Date's Vector Differences Transformation
ottenuta a partire dal vettore Pdu selezionando
l'oggetto Thirty360 nel menù a tendina “Day
Count Convention” e l'oggetto Unadjusted nel
menù a tendina “Date Rolling Convention”
Parte B
Parte B
195
TUTORIAL III – ACCRUAL SWAP
Una volta inseriti tutti gli input sopra elencati, l'ambiente Parameters & Functions ci apparirà così
come mostrato attraverso la figura III.1.
(Figura III.1: Riepilogo dati di input dell'Accrual Swap Tutorial)
Dopo di chè dobbiamo definire il processo stocastico sottostante, attivando l'ambiente Stochastic
Process. Cliccando sul comando Add S. Process possiamo inserire un modello stocastico da quelli
presenti in lista. La lista dei modelli disponibili può essere estesa con numerosi plug-ins disponibili
on-line.
Una volta inserito il processo stocastico, dovremo aprire la finestra di editing e selezionare il tab
Data Source al fine di attivare il data-link – per cui il campo "Binding type" dovrà essere
valorizzato selezionando la voce Bind object to specific data – selezionare il mercato borsistico di
riferimento – per cui si dovrà valorizzare il campo "Market" selezionando, ad esempio, con
riferimento al caso specifico del presente tutorial, la voce EU – e gli strumenti sui quali la
calibrazione dovrà essere effettuata – per cui si dovrà valorizzare opportunamente il campo
"Calibration Strategy" (figura III.2).
Per l'esempio specifico abbiamo scelto un modello assai noto per la determinazione dei tassi di
interesse a breve, ovvero il modello Hull & White e la calibrazione avverrà utilizzando le
swapoptions europee.
Dopo aver chiuso la finestra di editing, dovremo aprire il menù di contesto, premendo il tasto destro
del mouse, e si dovrà selezionare la voce Calibrate model using data provider.
Per la scelta del Market Data Provider dovremo selezionare il seguente percorso: Settings →
Fairmat Preferences → Tab Core Preferences → Tab General; arrivati al tab General si dovrà
valorizzare opportunamente il menù a cascata "Market Data Provider".
196
TUTORIAL III – ACCRUAL SWAP
(Figura III.2: Definizione del processo stocastico sottostante per il tutorial Accrual Swap)
Il passo successivo è quello poi di impostare il modello di discounting. Per questo esempio
specifico stiamo utilizzando un processo stocastico per il quale viene definito un modello di
discounting riferito al processo medesimo (@V1 – figura III.3).
(Figura III.3: Impostazione del modello di Discounting)
In aggiunta dovremo definire lo step di simulazione e il numero dei paths (ovvero dei percorsi)
della simulazione Montecarlo. Possiamo specificare tali impostazioni selezionando il seguente
percorso: Settings → Numerical Settings e compilando i campi "# of discrete time steps" e "# of
simulated paths" (nel caso specifico preso in esame – parte destra della figura III.3 – dovremo
valorizzare i campi inserendo, rispettivamente, i valori 1837 – ovvero il numero di giorni di
calendario intercorrenti fra la Simulation Date, ovvero la data di inizio simulazione, e la
Termination Date, ovvero la data di fine, di scadenza – e 5000 – ovvero il numero dei percorsi
simulati (o "simulated paths").
197
TUTORIAL III – ACCRUAL SWAP
A questo punto siamo pronti per la modellazione del contratto nell'ambiente Option Map.
Dalla tavolozza grafica della Option Map, attraverso un semplice drag&drop (letteralmente
"trascina e lascia cadere") dovremo innanzitutto inserire un operator Functional al quale dovremo
poi unire, attraverso due branches, due Strip of Options.
Attraverso la figura III.4, possiamo vedere come appare l'ambiente Option Map una volta inseriti
l'operator Functional e le due Strip of Options, una relativa alla Parte A e l'altra relativa alla Parte B.
(Figura III.4: Option Map e Operatore funzionale Functional)
Nel dettaglio, la Parte A (Leg A) del contratto è caratterizzato alla funzione Convertible (figura
III.5) creata dall'utente nell'ambiente Parameters & Functions come y = f(x1, x2) – dove x1 e x2 sono
le variabili indipendenti e y è l'output della funzione stessa – e richiamata nell'ambiente Option
Map.
Con l'eccezione legata all'oggetto Spread (uno scalar che può essere invocato nell'ambiente
dell'editor della funzione) x1 e x2 sono sempre scalar risultati di una funzione incorporata (ovvero
RATE(x1, x2, x3)) come anche lo sono le componenti di un vettore, TassoSoglia[#] ad esempio, o
come anche il semplice scalar Matfl (il quale è input della funzione RATE).
(Figura III.5: Dettaglio della funzione Convertible, e del payoff della Parte A)
198
TUTORIAL III – ACCRUAL SWAP
La Parte B (Leg B) del contratto è, invece, caratterizzata dalla funzione RangeAccrual (figura III.6).
Le variabili indipendenti x1, x2 e x3 vengono invocate nell'ambiente Option Map come,
rispettivamente, il risultato della funzione incorporata RATE, dei componenti del vettore Estr.Inf.B e
dei componenti del vettore Estr.Sup.B.
L'intera funzione definita dall'utente RangeAccrual viene poi ricompresa all'interno della funzione
incorporata IMean per calcolare il valore medio di ciascuna payment date.
La funzione IMean(start; end; (expr); [increment]) restituisce la media aritmetica semplice (ovvero
con tutti i pesi pari a 1/N, quindi equiparati, tutti identici) dei valori dell'espressione expr valutata
nell'intervallo di valori compresi fra start e end campionato con un numero di step (di passi di
iterazione) pari a (end – start)/increment. Si precisa che increment è un parametro opzionale che
identifica lo spazio di incremento. Se viene omesso nella chiamata di funzione, sarà uguale allo step
della simulazione Montecarlo (in questo caso quindi l'intervallo temporale verrà campionato in
modo daily, e quindi increment sarà pari a 1/365). Assumendo # = 1 la funzione incorporata IMean
sarà per il caso specifico preso in esame con il presente tutorial:
I Mean(Sdu[1]; Pdu[1]; {RangeAccrual(RATE(xa ; matfl; @V1); Estr.Inf.B[1]; Estr.Sup.B[1])};
(1/365))
dove Sdu[1] è uguale a 0,03014, Pdu[1] è uguale a 0,53151 e Increment è pari a 1/365 = 0,00274
per cui il numero dei passi di iterazione è pari a 183 circa. Per cui la funzione RangeAccrual verrà
invocata circa 183 volte allo scopo di definire il range, l'intervallo, medio di accumulazione per la
prima payment date.
(Figura III.6: Dettaglio della funzione RangeAccrual, e del payoff della Parte B)
In questo esempio abbiamo implementato come scalar elementi come N, Spread, ValInf e ValSup.
Nel caso in cui il contratto in esame contenga payment dates dipendenti da una serie di parametri,
può essere utilizzata la caratteristica di indicizzazione dei vettori consentita da Fairmat.
199
TUTORIAL IV
PATH
DEPENDENCE
TUTORIAL IV – PATH DEPENDENCE
In questo tutorial mostriamo un esempio di valutazione di un contratto derivato con la caratteristica
del Path Dependent (letteralmente, "del percorso dipendente").
Un'opzione Path Dependent è un'opzione il cui valore a scadenza dipende non soltanto dal prezzo
finale dell'attività sottostante ma anche dalla serie storica dei suoi prezzi.
Con la tabella IV.I, sottoriportata, proponiamo la scheda tecnica dell'opzione Path Dependent,
appena descritta.
(Tabella IV.1 – Scheda tecnica opzione Path Dependent)
Up-Front
Nozionale
Data Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambi
Dal 17/05/2005 al 17/05/2006
Dal 17/05/2006 al 17/05/2008
Dal 17/05/2008 al 17/05/2010
Convenzioni
Date di Reset
Day Count Fraction
22.000,00
11/05/2005
17/05/2005
17/05/2010
Trimestrale
Trimestrale
Parte A
0,600%
Max [CN -1 + 3,75*(Eur3 – X); 0]
CN – 1
Payment Dates
17/08/2006
17/11/2006
17/02/2007
17/05/2007
17/08/2007
17/11/2007
17/02/2008
17/05/2008
Parte A
Advance
Act/360
Parte B
4,60%
Tasso Fisso (X)
2,75%
2,95%
3,15%
3,35%
3,55%
3,75%
3,95%
4,15%
Parte B
Act/360
Tutte le date sono corrette, aggiustate, seguendo la Modified Following Business Day Convention.
La funzione CN si riferisce alla cedola immediatamente precedente.
Come possiamo notare osservando nuovamente e con attenzione la scheda tecnica proposta con la
tabella IV.1, la caratteristica del Path Dependent è attiva a partire dal secondo anno fino alla
Termination Date (ovvero fino alla data di scadenza).
Il metodo più semplice per valutare questo tipo di contratto derivato è quello di costruire una
funzione specifica Path Dependent che verrà utilizzata per il secondo e il terzo anno di contratto; la
caratteristica del Path Dependent in realtà, come già accennato in precedenza, continua a valere fino
alla Termination Date (ovvero fino alla data di scadenza) ma in questa sede adottiamo una
semplificazione ed ipotizziamo che gli ultimi otto scambi – ovvero quelli che avvengono nel
200
TUTORIAL IV – PATH DEPENDENCE
periodo compreso tra la data del 17/08/2008 e la data del 17/05/2010 (Termination Date) – saranno
fissati al 12° scambio.
Con la tabella IV.2, sottoriportata, proponiamo l'elenco delle date contenute nei vector dates Pdu e
Exu e l'elenco dei tassi fissi Xi associati alle rispettive date d'esercizio non corrette di cui al vettore
Exu.
(Tabella IV.2 – Vector dates Pdu e Exu e tassi fissi Xi associati alle date d'esercizio non corrette)
Pdu
Exu
(Payment dates (Date d'esercizio
non corrette)
non corrette)
17/05/2005
17/08/2006
17/08/2005
17/11/2006
17/11/2005
17/02/2007
17/02/2006
17/05/2007
17/05/2006
17/08/2007
17/08/2006
17/11/2007
17/11/2006
17/02/2008
17/02/2007
17/05/2008
17/05/2007
17/08/2007
17/11/2007
17/02/2008
17/05/2008
17/08/2008
17/11/2008
17/02/2009
17/05/2009
17/08/2009
17/11/2009
17/02/2010
17/05/2010
Xi
(Tasso fisso
d'esercizio)
2,75%
2,95%
3,15%
3,35%
3,55%
3,75%
3,95%
4,15%
Il processo stocastico sottostante in grado di descrivere l'evoluzione temporale del driver rate, del
tasso di interesse di riferimento (che nel caso specifico è rappresentato dal tasso Euribor a 3 mesi,
con scadenza trimestrale), potrebbe essere uno dei processi stocastici gestibili in Fairmat.
Nel caso specifico abbiamo scelto il processo Hull & White ad un parametro, i cui parametri sono
così valorizzati alla data di negoziazione (Trade Date):
• α (alpha): 0,000000010001438;
• σ (sigma): 0,0634152698142725;
dove α indica il coefficiente di reversione media (mean reversion) mentre σ indica la deviazione
standard dei tassi a breve.
A questo punto dovremo aprire un nuovo progetto in Fairmat (ovvero un New Empty Project) e
dovremo inserire nell'ambiente Parameters & Functions gli input del problema.
Con la figura IV.1 mostriamo come apparirà l'ambiente Parameters & Functions di Fairmat una
201
TUTORIAL IV – PATH DEPENDENCE
volta inseriti tutti gli input e tutti gli oggetti del problema relativo a questo tutorial.
(Figura IV.1: Riepilogo oggetti dell'ambiente Parameters & Functions necessari per la modellazione del
tutorial Path Dependence)
I vettori di date Pd e rdAr derivano dal vettore Pdu, ovvero il vettore di date contenente le payment
dates non aggiustate, non corrette, mediante l'utilizzo della funzione di conversione delle date
Vector's adjustment function. Il vettore time si ottiene, invece, utilizzando la funzione di
conversione delle date Vector's difference function.
Gli ultimi quattro oggetti inseriti nell'ambiente Parameters & Functions (ovvero il vettore Exu, il
vettore Ex, il vettore Xi e la funzione CN) si riferiscono specificamente alla caratteristica del Path
Dependent del contratto derivato oggetto di analisi del presente tutorial.
In particolare: il vettore di date Ex (Exercise Date) contiene le date d'esercizio aggiustate, corrette,
ovvero le payment dates del secondo e del terzo anno di contratto; il vettore Xi contiene, invece, i
tassi di interesse fissi associati alle payment dates contenute nel vettore Ex.
Per quanto concerne la funzione ricorrente di Fairmat CN (figura IV.2) nel dettaglio:
• il suo vettore di riferimento è dato Ex; detto altrimenti la caratteristica del Path Dependent è
indicizzata allo specifico vettore Ex;
• il suo valore iniziale (ovvero il "Starting Value") deriva dalla seguente espressione max
(0,60% + 3,75% * (RATE(rdAr[5]; 0,25; @v1) – Xi[1]; 0) dove:
1) 0,60% indica l'ultima cedola rilevata prima dell'inizio del periodo di validità della
caratteristica del Path Dependent;
2) il vettore rdAr è indicizzata alla posizione numero 5 (detto altrimenti e meglio, il vettore
rdAr ha l'indice che parte dal valore 5) in quanto lo stesso deriva dal vettore Pdu ma la
funzione legata alla caratteristica del Path Dependent parte dalla quinta data contenuta
nel vettore Pd e quindi dalla posizione 5 del vettore Pd;
3) il vettore Xi ha l'indice che parte dal valore 1 in quanto, come il vettore Ex, anche lo
stesso vettore Xi rappresenta uno specifico vettore per la funzione legata alla
caratteristica del Path Dependent;
•
la sua "Update Expression" (ovvero l'espressione di ricorrenza) è rappresentata dalla
seguente: max (CN[x-1] + 3,75% * (RATE(rdAr[x+4]; 0,25; @v1) – Xi[x]; 0) nella quale
202
TUTORIAL IV – PATH DEPENDENCE
CN[x-1] rappresenta la caratteristica base del Path Dependent (per cui il valore di CN[x]
dipende dal valore di CN[x-1]). Il valore della funzione CN dipende da x. Il vettore rdAr si
riferisce alle payment dates mentre il vettore Xi è direttamente collegato, indicizzato, al
vettore delle date d'esercizio Ex (@ex);
(Figura IV.2: dettaglio della funzione ricorrente CN)
La funzione CN si riferisce al payoff che la Parte A è tenuta a corrispondere per il secondo e per il
terzo anno di contratto. Più nel dettaglio e formalmente vale la seguente:
Coupon(i)=max [Coupon(i−1)+ 3,75∗(Eur3− X (i)); 0]
per i = 1,2, ..., 8
[IV.1]
La funzione ricorrente CN vale per il periodo che va dalla data del 17/08/2006 fino alla data del
17/05/2008, ovvero dalla quinta payment date fino alla dodicesima payment date. Tale funzione
necessita di un valore di partenza (corrispondente nel caso specifico a CN[1], dove CN[0] indica il
tasso cedolare rilevato alla data del 17/05/2006 – Trade Date o data di negoziazione contratto – e
che risulta essere pari allo 0,60%) e di un'espressione di aggiornamento, di un'espressione
ricorrente.
203
TUTORIAL IV – PATH DEPENDENCE
Notiamo che la variabile x si riferisce alle date di esercizio, mentre il vettore rdAr si riferisce alle
payment dates. Così, ad esempio, quando x è uguale a 2 si avrà:
rdAr[x+4] = rdAr[2+4] = rdAr[6]
Xi[x] = Xi[2] e
CN[x-1] = CN[2-1] = CN[1] ovvero il valore di partenza della funzione ricorrente CN.
Per implementare correttamente la caratteristica del Path Dependent in Fairmat è anche, e
soprattutto, necessaria un'impostazione preliminare attivabile selezionando il seguente percorso:
Settings → Numerical Settings → Advanced Settings successivamente si dovrà valorizzare il campo
"Predictors" selezionando la voce Recurrence Functions + all State Variables (forced).
204
TUTORIAL V
SWAP
WITH
ASIAN OPTION
TUTORIAL V – SWAP WITH ASIAN OPTION
Le opzioni asiatiche (o Asian Options) sono contratti finanziari derivati non standardizzati il cui
valore dipende dalla media dei prezzi, dei valori, dell'attività sottostante (quale può essere, per
esempio, un indice azionario o un paniere di titoli azionari) durante un determinato periodo di
tempo.
Descrizione
Con questo tutorial mostreremo un esempio di contratto swap con il quale si realizza lo scambio di
un tasso di interesse fisso contro un tasso di interesse variabile.
Più nel dettaglio la Parte A paga trimestralmente un tasso di interesse fisso del 4,50% mentre la
Parte B paga, a scadenza, il payoff di una Asian Option costruita sull'indice azionario FTSE MIB
(ovvero sull'indice azionario di riferimento della Borsa Valori di Milano).
Con la tabella V.1, sottoriportata, proponiamo la scheda tecnica del contratto derivato oggetto di
questo tutorial, appena descritto.
(Tabella V.1 - Scheda tecnica del contratto Swap con Asian Option)
Nozionale
Data di Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambi
Dalla Data di Inizio Contratto
Fino alla Data di Scadenza
Alla Data di Scadenza
€ 1.000.000,00
16/06/2010
18/06/2010
18/06/2015
Trimestrale
Alla Scadenza
Parte A
Parte B
4,50%
4,50%
Convenzioni
Parte A
Drivers rate per le date di reset
-
Day Count Conventions
Act/360,
Unadjusted
205
Max [70% ((ind_f/ind_i-1)-1); 0,00%]
- ind_i rappresenta il valore dell'indice
FTSE MIB alla Data di Inizio Contratto;
- ind_f rappresenta la media dei valori
dell'indice FTSE MIB rilevati in
corrispondenza
delle
Date
di
Osservazione;
Date di Osservazione
18/06/2011
18/06/2012
18/06/2013
18/06/2014
18/06/2015
Parte B
In corrispondenza delle Date di
Osservazione
Act/360,
Unadjusted
TUTORIAL V – SWAP WITH ASIAN OPTION
La principale caratteristica del contratto appena descritto è che esso è collegato al payoff finale che
la Parte B sarà tenuta a corrispondere. La Parte B paga, infatti, un payoff corrispondente al 70%
della variazione del valore dell'indice azionario FTSE MIB (indice di riferimento per la Borsa
Valori Italiana) da un suo valore di partenza ad un suo valore finale (qualora la differenza tra il suo
valore finale e il suo valore iniziale rilevati sia positiva).
In ogni caso, è bene notare che mentre la rilevazione iniziale occorre in corrispondenza di una
specifica data (e più precisamente la data del 18/06/2010), la rilevazione finale è data da una media
aritmetica dei valori dell'indice rilevati in corrispondenza delle Date di Osservazione (e più
precisamente al 18 Giugno di ciascun anno e per 5 anni a partire dall'anno 2011).
E' quindi in questo modo che dobbiamo determinare il payoff derivante da una Asian Option.
Implementazione con Fairmat
Con la tabella V.2, sottoriportata, riproponiamo la scheda tecnica del contratto oggetto di questo
tutorial in termini però diversi, ovvero in termini parametrici e quindi utilizzando gli oggetti
disponibili nell'ambiente Parameters & Functions.
(Tabella V.2 - Scheda tecnica del contratto Swap con Asian Option)
Nozionale
Data di Negoziazione
Data Inizio Contratto
Data di Scadenza
Frequenza di pagamento Parte A
Frequenza di pagamento Parte B
Scambi
Dal tempo 1
Fino a Pda[end]
In corrispondenza di Pda[end]
Parte A
N
Trade Date
Effective Date
Pda[end]
Frequenza del vettore Pda
In corrispondenza di Pda[end]
Parte B
Fix
Fix
Max [Gear ((ind_f/ind_i-1)-1); K]
Funzione FTSEcn
- ind_i rappresenta il valore dell'indice
FTSE MIB alla Data di Inizio Contratto;
Convenzioni
Parte A
Drivers rate per le date di reset
-
Day Count Conventions
Cvg_A
206
- ind_f rappresenta il valore ottenuto
applicando la funzione incorporata
AMean sui valori dell'indice FTSE MIB
rilevati in corrispondenza di ciascun
elemento del vettore Oda;
Parte B
In corrispondenza di ciascun elemento del
vettore Oda
Cvg_B
TUTORIAL V – SWAP WITH ASIAN OPTION
Per modellare il contratto Swap con Asian Option dobbiamo, innanzitutto, aprire in Fairmat un
nuovo progetto vuoto (ovvero un New Empty Project).
Selezionando il percorso Settings → Project Preferences → Tab Simulation Dates and Conventions
è possibile specificare la Valuation Date e la Effective Date (ovvero la Data di Inizio Contratto).
Dopo di chè dovremo entrare nell'ambiente Parameters & Functions nel quale potremo inserire gli
oggetti necessari per la modellazione del contratto Swap con Asian Option, riepilogati attraverso la
tabella V.3.
(Tabella V.3 - Riepilogo e descrizione dati di input Tutorial Swap with Asian Option)
NOME
TIPO DI DATO
CATEGORIA
Scalar
Parametro
Pdu
Date Sequence
Parametro
Pda
Date Vector
Adjustmet
Parametro
Cvg
Date Vector
Differences
Calculator
Parametro
N
ZrDisc
Fix
Funzione
Interpolante
Scalar
Parametro
Scalar
Parte B
K
Scalar
Parte B
Odu
Date Sequence
Parte B
Oda
Date Vector
Adjustmet
Parte B
Funzione Analitica
Parte B
FTSEcn
Rappresenta la curva di sconto
Parte A
Gear
DESCRIZIONE
Indica l'ammontare del capitale nozionale del
contratto
E' il vettore delle date di pagamento non
aggiustate, non corrette
E' il vettore delle date di pagamento corrette,
aggiustate per la Following Date Rolling
Convention, ottenuto a partire dal vettore Pdu
Date's Vector Differences Transformation
ottenuta a partire dal vettore di date Pdu
selezionando l'oggetto Actual360 nel menù a
tendina “Day Count Convention” e l'oggetto
Unadjusted nel menù a tendina “Date Rolling
Convention”
Indica il tasso cedolare fisso
Indica la percentuale (o tasso) di partecipazione
nel cambio dell'indice FTSE MIB. Tale
variabile viene utilizzata nella funzione definita
dall'utente FTSEcn
Indica il strike floor rate, ovvero il tasso di
interesse minimo di esercizio. Tale variabile
viene utilizzata nella funzione definita dall'utente
FTSEcn
E' il vettore delle date di osservazione non
aggiustate, non corrette
E' il vettore contenente le date di osservazione
aggiustate, corrette per la Preceding Date
Rolling Convention, ottenuto a partire dal
vettore Oda
E' la funzione definita dall'utente che esprime il
payoff che la Parte B dovrà corrispondere. In
particolare, tale payoff è dato dal valore
massimo fra il valore della variabile K e il
risultato del prodotto ottenuto moltiplicando la
variabile Gear e il rapporto fra i due valori
assunti dall'indice FTSE (meno 1). Max è una
funzione incorporata di Fairmat
207
TUTORIAL V – SWAP WITH ASIAN OPTION
Una volta inseriti tutti gli input sopra elencati e riepilogati, l'ambiente Parameters & Functions
apparirà così come mostrato attraverso la figura V.1.
(Figura V.1: Riepilogo oggetti dell'ambiente Parameters & Functions necessari per la modellazione del
Tutorial Swap with Asian Option)
Dopo di chè dovremo definire il processo stocastico sottostante attivando l'ambiente Stochastic
Process. Cliccando sul comando Add S. Process possiamo inserire un modello stocastico da quelli
presenti in lista. La lista dei modelli disponibili può essere estesa con una serie di numerosi plug-ins
disponibili on-line.
Una volta inserito il processo stocastico dovremo aprire la finestra di editing e selezionare il tab
Data Source al fine di attivare il data-link – per cui dovremo valorizzare il campo "Binding type"
selezionando la voce Bind object to specific data –, selezionare il mercato borsistico di riferimento
– per cui dovremo valorizzare il campo "Market" selezionando, ad esempio con riferimento al caso
specifico di questo tutorial, la voce EU. In questo caso specifico l'attività sottostante alla Asian
Option è un indice azionario per cui dovremo specificare anche il ticker reference – valorizzando il
relativo campo "Ticker" con il codice FTSEMIB Index, che è il ticker che identifica appunto l'indice
FTSE MIB nella piattaforma di Bloomberg Professional – oltre che la strategia di calibrazione del
processo stocastico inserito – per cui dovremo valorizzare opportunamente il campo "Calibration
strategy" (figura V.2).
Per l'esempio specifico abbiamo selezionato un semplice modello GBM (Geometric Brownian
Motion), collegato all'indice FTSE MIB, e la calibrazione avverrà utilizzando i dati relativi ai tassi a
breve di mercato.
Dopo aver chiuso la finestra di editing, dovremo aprire il menù di contesto, premendo il tasto destro
del mouse e dovremo selezionare la voce Calibrate model using data provider.
Per la scelta del Market Data Provider dovremo selezionare il seguente percorso: Settings →
Fairmat Preferences → Tab Core Preferences → Tab General; arrivati al tab General dovremo
valorizzare opportunamente il menù a cascata "Market Data Provider".
208
TUTORIAL V – SWAP WITH ASIAN OPTION
(Figura V.2: Editing Tab Data Source)
Il passo successivo è quello di impostare il modello di discounting (figura V.3). Per questo esempio
specifico il tasso di crescita (ovvero il Growth Rate) del modello GBM è r-d (corrispondente al risk
free rate, ovvero il tasso di interesse privo di rischio, e quindi corrispondente al tasso di interesse
che giace lungo la curva di sconto, la yield curve, in corrispondenza del tempo 0 sottratto il
dividend-yield).
Di conseguenza dovremo impostare il tasso di sconto (ovvero il discount rate) uguale alla costante
ZrDisc(0).
(Figura V.3: Impostazione del modello di Discounting)
In aggiunta dovremo definire lo step di simulazione e il numero dei paths (ovvero dei percorsi) della
simulazione Montecarlo (parte di destra della figura V.3). Possiamo specificare tali impostazioni
selezionando il seguente percorso: Settings → Numerical Settings e compilando successivamente i
209
TUTORIAL V – SWAP WITH ASIAN OPTION
campi "# of discrete time steps" e "# of simulated paths" (nel caso specifico preso in esame i campi
dovranno essere valorizzati inserendo, rispettivamente, i valori 1828 – ovvero il numero di giorni di
calendario intercorrenti fra la Simulation Date, ovvero la data di inizio simulazione, e la
Termination Date, ovvero la data di scadenza, termine – e 5000 – ovvero il numero dei percorsi
simulati (o "simulated paths").
Siamo a questo punto pronti per la modellazione del contratto Swap with Asian Option
nell'ambiente Option Map (parte di sinistra della figura V.4).
Come già accennato, la Parte A paga, su base trimestrale, una serie di flussi di cassa connessi al
tasso di interesse fisso concordato.
La Parte B paga, invece, un unico flusso di cassa, alla scadenza, a seconda della performance
dell'indice FTSE MIB nel tempo.
Per cui dalla tavolozza grafica della Option Map, attraverso un semplice drag&drop (letteralmente
"trascina e lascia cadere") dovremo innanzitutto inserire un operator Functional al quale dovremo
poi unire, attraverso due branches, una Strip of Options (che si riferirà alla Leg A del contratto e che
quindi sarà relativa alla Parte A) e una Single Option (che si riferirà invece alla Leg B del contratto e
che quindi sarà relativa alla Parte B).
L'operator Functional permette, in particolare, di determinare la compensazione dei flussi di cassa
scambiati fra le parti contraenti assumendo il punto di vista soggettivo della Parte A (parte di destra
della figura V.4).
(Figura V.4: Ambiente Option Map e Operator Functional)
Esaminando nel dettaglio le dinamiche relative alle parti contrattuali interessate e ai loro payoff
(figura V.5) nella finestra di editing del tab Timing and Payoff relativa alla Parte A mostriamo una
serie di pagamenti che vanno dal tempo 1 fino al tempo corrispondente al valore a lenght(@Pda),
ovvero una serie di pagamenti che coprono temporalmente tutta la lunghezza del vettore Pda (nel
caso specifico pari a 20), calcolati come un tasso di interesse fisso moltiplicato per il periodo di
210
TUTORIAL V – SWAP WITH ASIAN OPTION
accumulo degli interessi (o Accrual Period) e per l'ammontare del capitale nozionale di riferimento.
Premendo il tasto View possiamo notare come nel processo di iterazione così costruito, il simbolo
incognito (#) assume i valori 1, 2, ..., lenght(@Pda) – parte di destra della figura V.5.
(Figura V.5: Dettaglio del payoff della Parte A)
La Parte B (Leg B) del contratto è, invece, caratterizzata dalla funzione FTSEcn, funzione definita e
creata dall'utente nell'ambiente Parameters & Functions come y = f(x1 , x2) – dove x1 e x2 sono le
variabili indipendenti e y è il risultato della funzione – richiamata nell'ambiente Option Map.
Con l'eccezione legata alla variabile Gear (uno scalar che può essere invocato direttamente
nell'ambito dell'editor della funzione), x1 e x2 sono sempre scalar risultati della funzione incorporata
AMean come anche il valore del processo GBM in corrispondenza della Effective Date (valore
rappresentato dall'oggetto V1 [Effective Date]).
(Figura V.6: Dettaglio della funzione FTSEcn, e del payoff della Parte B)
La funzione AMean (@vec; {expr}; [start]; [N]) restituisce la media dei valori dell'espressione expr
valutata dall'indice della posizione di partenza del vettore vec (ovvero start) per il numero N di
211
TUTORIAL V – SWAP WITH ASIAN OPTION
elementi considerati dal vettore stesso. I parametri start e N sono parametri opzionali per cui non è
sempre necessario esplicitarli nella funzione. Qualora venga omessa la dichiarazione di tali
parametri nella chiamata della funzione, le impostazioni di default saranno le seguenti start = 1 e N
= lenght(@vec).
Nel caso specifico di questo tutorial, il vettore di riferimento è Oba (ovvero il vettore delle date di
osservazione aggiustate, corrette) e la funzione calcola una media dei valori assunti dal processo
stocastico V1 alle date di osservazione (corrette, aggiustate).
212
TUTORIAL VI
RELOAD3
BOND
TUTORIAL VI – RELOAD 3 BOND
Introduzione
Il Bond Reload3 è un'obbligazione strutturata che prevede il pagamento di una cedola fissa
periodica e il pagamento di una cedola aggiuntiva determinata da un evento aleatorio o azionario.
Il verificarsi di tale evento è, in particolare, condizionato all'andamento di alcuni indici di borsa (nel
caso specifico si tratta dei seguenti indici: Eurostoxx50, SP500, Nikkei250, Swiss Market e Hang
Seng).
L'evento aleatorio o azionario contemplato nel contratto consiste in questo: data la media di ciascun
indice riferita a tre date, ovvero le date 23/05/2008, 24/05/2008 e 25/05/2008 (il cui valore è
rappresentato dalla variabile InitMean), il valore di ciascun indice non deve essere inferiore del
90% (valore di confronto e di riferimento rappresentato dalla variabile thres) rispetto al valore
medio iniziale in almeno un anno a partire dal terzo anno di vita del contratto.
La media dell'indice viene calcolata, in particolare, sui valori di chiusura rilevati i giorni 23, 24 e 25
del mese di Aprile per ogni anno a partire dal terzo. Tali date, di riferimento ai fini del calcolo della
media dell'indice, sono, in particolare, contenute nel vettore di date RevD.
A seconda dell'anno in cui si verifica l'evento viene definito il piano per il tasso cedolare aggiuntivo
pagato dall'obbligazione negli anni successivi.
Con la tabella VI.1 riportiamo i valori relativi al piano delle (eventuali) cedole aggiuntive nel caso
in cui si verifichi l'evento aleatorio, o azionario, anno per anno.
(Tabella VI.1 – Piano delle cedole aggiuntive)
Interessi aggiuntivi eventuali
Evento
No
Evento
4° Anno
5° Anno
23/05/2013
0
20,00%
0
23/05/2014
0
6,10%
27,40%
Per riga leggiamo le date di pagamento residue mentre per colonna leggiamo le cedole aggiuntive
da corrispondere qualora si verifichi l'evento aleatorio, o azionario, previsto contrattualmente.
Per cui: qualora l'evento aleatorio o azionario si verificasse al 4° anno, al possessore del bond
verranno corrisposte alla data del 23/05/2013 e alla data del 23/05/2014 delle cedole aggiuntive del,
rispettivamente, 20,00% e 6,10%; qualora, invece, l'evento aleatorio o azionario si verificasse al 5°
anno al possessore del bond verrà corrisposta alla data 23/05/2014 una sola cedola aggiuntiva del
27,40%.
Nel caso in cui, invece, l'evento aleatorio o azionario non si verificasse al possessore del bond non
verrà corrisposta alcuna cedola.
213
TUTORIAL VI – RELOAD 3 BOND
Funzione ricorsiva
Per valutare qual è il valore ad oggi del bond Reload3 dobbiamo innanzitutto definire la matrice, di
dimensione 2x3, degli eventuali pagamenti delle cedole aggiuntive (o optional extra-coupons),
ovverosia la matrice ExtraCpn nella quale tutti i valori della prima colonna sono posti pari a 0 (dal
momento che tali valori si riferiscono al caso in cui l'evento aleatorio o azionario non si verifichi
mai), mentre nelle due colonne successive verrà riportato il piano relativo alle cedole aggiuntive per
i due anni, appunto, di contratto successivi al terzo (in quanto tali valori si riferiscono, invece, al
caso in cui l'evento aleatorio o azionario si verifichi, rispettivamente, o al 4° anno o al 5° anno).
Nello specifico la matrice ExtraCpn si presenterà così:
0
0
0,02
0,061
0
0,274
oppure così
0
0
20,00%
6,10%
0
27,40%
Per valutare l'opzionalità delle cedole aggiuntive dobbiamo implementare una funzione ricorrente
avente lo scopo di identificare l'indice di colonna corretto della matrice ExtraCpn.
Con la figura VI.1 mostriamo l'implementazione del payoff relativo al pagamento dell'eventuale
cedola aggiuntiva, o ai pagamenti delle eventuali cedole aggiuntive.
(Figura VI.1: Editing del payoff relativo al pagamento delle eventuali cedole aggiuntive)
In particolare nell'espressione della Strip of Options, la matrice ExtraCpn viene richiamata con
indice di riga definito dai valori inseriti nei campi "From", "Step" e "To" (riportati nella parte alta
della finestra di editing) e con indice di colonna definito dalla funzione XtCpCol.
Tale funzione serve, in particolare, per selezionare il valore dell'indice di colonna della matrice
ExtraCpn. La funzione ricorrente così definita ed utilizzata è nello specifico una Function defined
by a recurrence expression (array) nella quale deve essere specificato (figura VI.2):
• il vettore sul quale devono essere iterati, ciclati, gli indici, valorizzando il campo "array
reference";
• il valore di partenza della funzione, valorizzando il campo "Starting Value (XtCpCol(1)=)";
• il valore della funzione negli steps successivi, valorizzando il campo "Update Expression
(XtCpCol(x)=)";
214
TUTORIAL VI – RELOAD 3 BOND
(Figura VI.2: Editing della funzione ricorrente XtCpCol)
Sempre osservando ancora una volta e più attentamente la figura VI.2, notiamo il fatto che per
definire la funzione ricorrente XtCpCol abbiamo dovuto utilizzare la funzione ASprod, una funzione
che ci permette di valutare più attività sottostanti, e la funzione AMean. Quest'ultima ha come
argomento il vettore di date di riferimento RevD su cui calcolare la media, i processi (indicizzati con
xa), l'indice (di posizione) della prima data da considerare per il calcolo ed, infine, il numero di date
complessivo da considerare (in questo caso pari a 3 in quanto è compresa la prima data).
L'espressione riportata nel campo "Update expression (XtCpCol(x)=)" provvede, in particolare, ad
aggiornare l'espressione pecedente considerando la situazione verificatasi in precedenza (con indice
x).
215
TUTORIAL VII
CONVERTENDO
BPM
2009/2013 - 6,75%
WITH WARRANT
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Introduzione
Un Mandatory Convertible Bond (ovvero un'obbligazione convertibile obbligatoriamente a
scadenza) è un particolare tipo di obbligazione contenente la clausola di conversione obbligatoria, o
di mandatory convertible appunto, da esercitarsi a scadenza.
Fino alla scadenza, il possessore del bond riceve una cedola in corrispondenza di ciascuna payment
date. A scadenza, il possessore del bond riceverà un dato numero di azioni di compendio, definito
contrattualmente, anzichè il rimborso del bond per il suo valore nominale.
Nel caso preso in esame con questo tutorial, il possessore del bond ha anche la facoltà di convertire
il valore nominale del bond in un dato numero di azioni di compendio prima della scadenza. La
conversione del bond comporta l'aumento del numero di azioni outstanding (ovvero in circolazione,
costituenti il flottante di mercato) e, quindi, una diluizione del capitale azionario.
Nel corso dell'offerta al pubblico, al sottoscrittore del bond Convertendo BPM 2009/2013 – 6,75%
viene anche proposta in offerta un'opzione Warrant la quale consente di sottoscrivere un certo
numero di azioni BPM, emittende del bond in questione.
Un warrant è, in particolare, un'attività finanziaria che conferisce al suo possessore la facoltà di
sottoscrivere, o di acquistare o di vendere, da esercitarsi a, oppure entro una certa scadenza, un
determinato numero di azioni (definite anche azioni di compendio) contro il pagamento di un
ammontare fisso, o comunque determinato sulla base di determinati criteri stabiliti contrattualmente
(nel caso dei warrant di sottoscrizione o di acquisto), o contro dell'incasso di un certo di un
ammontare fisso, o determinato sulla base di determinati cristeri stabiliti contrattualmente (nel caso
dei warrant di vendita o di tipo put). Qualora il warrant riconosca al suo possessore l'esercizio della
facoltà soltanto ad una determinata scadenza, allora lo stesso sarà di tipo europeo. Se, invece, il
warrant riconosce al suo possessore l'esercizio della facoltà entro una certa scadenza, allora lo
stesso sarà di tipo americano.
I warrant sono solitamente collegati a dei bond e possono essere utilizzati dall'emittente per
migliorare il rendimento dei bond stessi rendendoli più appetibili ai potenziali acquirenti.
Frequentemente tali warrant sono separabili rispetto al bond cui sono collegati (ovvero il cosiddetto
titolo principale) e possono essere negoziati in modo del tutto indipendente rispetto al titolo
principale stesso. Il prezzo del warrant viene definito premio.
Avendo come sottostante titoli azionari, l'esercizio del warrant impatta, cambiandoli, sia il valore
delle azioni dell'emittente che il numero delle azioni outstanding. Infatti, a fronte del pagamento del
prezzo d'esercizio del warrant, la società emittente emette nuove azioni: ciò porterà ad una
riduzione del rapporto EPS (ovvero Earnings per Shares, rapporto Utile/Prezzo) e quindi ad una
dimininuzione del livello di utile per ciascuna azione.
216
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Un esempio
In questo esempio assumiamo di voler stimare il valore del bond e del warrant, descritti nel
dettaglio attraverso la scheda tecnica riportata con la tabella VII.1, alla data del 25 Agosto 2009.
(Tabella VII.1 – Scheda tecnica del Bond Convertendo BPM 2009/2013 with Warrant)
CONVERTENDO BPM 2009/2013 – 6,75% CON WARRANT
Numero massimo di bond
695.535.200
Numero di bond
4.599.624
Numero di bond in offerta pubblica
4.599.624
Valore nominale unitario
100,00
Prezzo
100 + rateo interessi
Data Inizio Contratto
03/07/2009
Data Scadenza
01/06/2013
Annuale,
Frequenza cedola
A partire dal 10/06/2010
BOND
6,75%
(Convenzione Act/365)
Cedola
Conversione volontaria
Periodo d'esercizio
Dal 01/01/2010 al 28/03/2013
Rapporto di conversione
100/7 azioni
Conversione obbligatoria a scadenza
Media aritmetica dei 20 rapporti giornalieri di conversione
osservati negli ultimi 20 giorni precedenti il terzo giorno di
Rapporto di conversione
negoziazione antecedente la scadenza.
Dove il rapporto giornaliero di conversione (o Daily Conversion
Ratio – DCR) è pari a:
se il prezzo ufficiale delle
● 100/6
azioni di compendio è ≤ 6;
se il prezzo ufficiale delle
azioni di compendio è
● 100/Prezzo Ufficiale
compreso fra 6 e 7;
se il prezzo ufficiale delle
● 100/7
azioni di compendio è > 7;
WARRANT
Numero di Warrant assegnati
2.355.728
Numero di Warrant da assegnare
4.599.624
1 warrant per ciascun bond sottoscritto durante il periodo della
Rapporto di assegnamento
pubblica offerta
Periodo d'esercizio
Dal 01/05/2013 al 01/06/2013
Prezzo di sottoscrizione
8
Rapporto d'esercizio
9 azioni di compendio per ciascun warrant esercitato
217
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Il possessore del bond riceve una cedola annua del 6,75% (la prima cedola, in particolare, viene
corrisposta alla data del 10/06/2010) fino alla scadenza.
Dalla data del 01/10/2010 alla data del 28/03/2013 il possessore del bond ha la facoltà (non
l'obbligo) di convertire il bond sottoscritto in un ammontare minimo di azioni BMP (ovvero di
azioni di compendio), ed esattamente pari a 14,286 azioni per ogni bond sottoscritto (ovverosia il
risultato del rapporto fra 100 e 7). Se ciò accade, ovvero se il possessore del bond esercitasse la
facoltà di conversione volontaria, egli non riceverà più nè le cedole annue previsto fino alla
scadenza nè il rateo di interessi.
A scadenza il bond verrà automaticamente convertito in azioni, qualora il possessore del bond non
abbia esercitato prima la facoltà di conversione anticipata.
Il numero di azioni attribuite all'investitore è dato dal rapporto giornaliero di conversione (o Daily
Conversion Ratio – DCR) osservato sui 20 giorni precedenti il terzo giorno di negoziazione
antecedente la scadenza (ovvero osservato duante il periodo di osservazione).
Il rapporto di conversione giornaliero, in particolare, sarà pari a 16,667 azioni per ogni bond
sottoscritto (ovverosia il risultato del rapporto fra 100 e 6) qualora il prezzo ufficiale delle azioni di
compendio (o Official Share Price) sia inferiore a 6 euro.
Il rapporto di conversione giornaliero sarà, invece, pari a 14,286 per ogni bond sottoscritto
(ovverosia il risultato del rapporto fra 100 e 7) qualora il prezzo ufficiale delle azioni di compendio
sia superiore a 7 euro.
Il rapporto di conversione giornaliero sarà, infine, pari al risultato del rapporto fra 100 e il prezzo
ufficiale delle azioni di compendio qualora lo stesso Official Share Price sia compreso fra i 6 euro e
i 7 euro (per esempio: se si rileva un prezzo ufficiale per le azioni di compendio pari a 6,5 euro, il
rapporto di conversione giornaliero sarà pari a 100/6,5 = 15,385 azioni di compendio per ogni bond
sottoscritto).
Per cui il prezzo minimo di conversione è pari a 6 euro per azione di compendio mentre quello
massio di conversione è pari a 7 euro per azione di compendio.
Il rapporto di conversione minimo è pari a 100/7 = 14,286 azioni per bond sottoscritto mentre il
rapporto di conversione massimo è pari a 100/6 = 16,667 azioni per bond sottoscritto.
Durante il periodo dell'offerta pubblica, ai sottoscrittori del bond verrà assegnato un warrat per ogni
bond sottoscritto.
Il portatore del warrant può esercitare, in particolare, la facoltà di acquistare azioni ordinarie BPM
al prezzo d'esercizio di 8 euro per ciascun warrant nel periodo che va dalla data del 01/05/2013 alla
data del 01/06/2013.
Il payoff del warrant è quindi assai simile a quello di un'opzione call di tipo americano (ovvero al
seguente payoff: max{0; Sk – K}) dal momento che il portatore del warrant avrà convenienza ad
esercitarlo, esercitandone la facoltà incorporata, solo se il prezzo dell'azione sottostante supera il
prezzo d'esercizio. A differenza del caso delle opzioni call di tipo americano, l'esercizio del warrant
comporta però l'emissione di nuove azioni e quindi la diluizione del capitale sociale della società
emittente. Il prezzo del warrant dovrà essere pertanto aggiustato, corretto, da un coefficiente
(denominato X) che dovrà tener conto di tale effetto. Il coefficiente X è definito come il rapporto fra
il numero delle azioni outstanding (corrispondente a N) e la somma dell'ammontare delle azioni
outstanding più l'ammontare delle azioni emesse a seguito dell'eventuale esercizio dei warrant e
dell'esercizio della clausola di mandatory convertible (corrispondente a N+M) così che X = N/
(N+M).
218
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Un'implementazione con Fairmat
L'implementazione attraverso Fairmat dell'attività finanziaria descritta finora richiede una serie di
dati di input riepilogati attraverso la figura VII.1.
(Figura VII.1: Riepilogo dati di input del tutorial Convertendo BPM 2009/2013 – 6,75% with Warrant)
I parametri, appena elencati, possono essere classificati in tre categorie distinte:
• i parametri specifici relativi al contratto in esame e oggetto del presente tutorial;
• i parametri relativi ai dati di mercato; e, infine
• gli oggetti di tipo ausiliari e strumentali (ovvero gli oggetti e le funzioni che rappresentano
le trasformazioni dei parametri);
Con la tabella VII.2 (riportata nella pagina successiva) vengono elencati e descritti dettagliatamente
gli input che dovremo inserire nell'ambiente Parameters & Functions per la modellazione, prima, e
la valutazione, poi, del Bond Convertendo BPM with Warrant.
219
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
(Tabella VII.2 - Riepilogo e descrizione dati di input Tutorial Convertendo BPM with Warrant)
NOME
Mat
Pd
C
sd
ed
RcMin
RcMax
PcMin
PcMax
Coupon
N
sdW
StrikeW
nW
f1
X
TIPO DI DATO
DESCRIZIONE
Costant
Indica la scadenza del bond Convertendo BPM
E' il vettore delle date di pagamento non aggiustate, non
Date Sequence corrette, di dimensione 4x1, utilizzando per gli oggetti ausiliari
Pda e Cvg
E' il vettore contenente le date test approssimativamente di
richiamo (o di callability) che cadono con frequenza
Vector
bisettimanale anziché ogni giorno
Indica il primo giorno di riferimento per il calcolo del rapporto
Costant
di conversione giornaliero medio
Indica l'ultimo giorno di riferimento per il calcolo del rapporto
Costant
di conversione giornaliero medio
Costant
Indica il rapporto di conversione minimo (pari a 100/7)
Costant
Indica il rapporto di conversione massimo (pari a 100/6)
Costant
Indica il prezzo minimo di conversione
Costant
Indica il prezzo massimo di conversione
Costant
Indica il tasso cedolare annuo
Costant
Indica il valore nominale del bond Convertendo BPM
Costant
Indica il primo giorno del periodo d'esercizio del warrant
Costant
Indica il prezzo d'esercizio del Warrant
Indica il numero di azioni di compendio per ciascun warrant
Costant
esercitato
E' la funzione analitica che permette di determinare il rapporto
di conversione giornaliero. In particolare le variabili della
funzione analitica f1 sono le seguenti:
x1 = V1; x2 =
Funzione
PcMin; x3 = RcMax; x4 = PcMax; x5 = RcMin;
Analitica
La funzione analitica ha, al suo interno, il seguente costrutto di
selezione: iif (x 1 ≤ x 2 ; x 3 ; iif (x 1 ≥ x 4 ; x 5 ; N/x 1 ))
Costant
ZR
Funzione
Interpolante
q
Funzione
Interpolante
Pda
Date Vector
Adjustment
Cvg
Date Vector
Difference
Calculator
Indica il fattore di correzione, di aggiustamento, della
diluizione di capitale a seguito dell'esercizio dei warrant e della
conversione dei bond emessi
Indica la Zero Rate Curve ottenuta a partire dai tassi a breve
(spot) attraverso un modello di bootstrap
Indica il dividend yield (ovvero il rapporto tra il dividendo
staccato da un'azione e il prezzo di mercato dell'azione stessa)
ottenuta a partire dalla parità put/call in corrispondenza di
ciascuna scadenza
E' il vettore delle date di pagamento corrette, aggiustate per la
convenzione specificata (ad esempio Modifing Following,
ottenuto a partire dal vettore Pd
Date's Vector Differences Transformation ottenuta a partire
dal vettore di date Pd selezionando nei menù a tendina “Day
Count Convention” e “Date Rolling Convention” l'oggetto
relativo alla convenzioni specificate (ad esempio Act/Act e
Unadjusted)
220
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Modelliamo il processo stocastico sottostante che si riferisce all'andamento delle azioni di
compendio (e che per comodità e semplicità di esposizione denomineremo semplicemente BPM)
utilizzando il modello di Heston i cui parametri di riferimento sono riepilogati attraverso la tabella
VII.3, sottoriportata:
(Tabella VII.3 – Parametri di riferimento del modello stocastico)
NOME
S0
V0
K
theta
sigma
Zero Rate Cuve
Dividend Yield
Curve
DESCRIZIONE
Indica il valore iniziale del processo stocastico (riferito al titolo
azionario)
Indica il valore iniziale del processo di variazione istantanea
Indica il tasso al quale la variazione istantanea ritorna al valore di
theta
Indica la varianza lunga, o meglio la varianza media di lungo
periodo, del prezzo
Indica la volatilità della variabilità e determina quindi la varianza
della variazione istantanea
Indica la Zero Rate Curve ottenuta a partire dai tassi a breve
(spot) attraverso un metodo di bootstrap
Indica il dividend yield (ovvero il rapporto tra il dividendo
staccato dall'azione e il suo prezzo di mercato) ottenuta a partire
dalla parità put/call in corrispondenza di ciascuna scadenza
Attraverso la figura VII.4 mostriamo il riepilogo dei parametri del processo stocastico sottostante
inseriti nell'ambiente Stochastic Process.
(Figura VII.3: Riepilogo parametri del processo stocastico sottostante – modello di Heston)
221
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Implementazione del bond Mandatory Convertible
Possiamo stilizzare il bond Convertendo BPM 2009/2013 – 6,75% come un bond che paga una
cedola del 6,75% in corrispondenza di ciascuna payment date con una serie di opzioni incorporate.
Nel periodo che va dal 01/10/2010 al 28/02/2013, il possessore del bond ha la facoltà di convertire
il bond in un ammontare minimo di azioni BPM, ed esattamente pari a 100/7 = 14,286 azioni per
ogni bond sottoscritto. Possiamo stilizzare tale facoltà come una clausola di richiamo anticipato (o
callability).
Attraverso la figura VII.4 mostriamo la fase di editing della prima cedola annua corrisposta in
favore del possessore del bond. Il possessore del bond riceverà tale cedola annua alla data del
01/06/2010 (con una probabilità del 100% e quindi sicuramente) dato il fatto che il periodo di
conversione volontaria inizia più tardi, successivamente.
(Figura VII.4: Fase di editing della prima cedola annua corrisposta in favore del possessore del bond
Mandatory Convertible)
Il possessore del bond riceverà poi la seconda cedola annua e la terza cedola annua solo se non è
stata effettuata nè richiesta la conversione volontaria (ovvero la clausola di callability che andremo
a stilizzare attraverso Fairmat) . Infatti, sia la seconda che la terza payment date sono comprese nel
periodo di conversione volontaria.
Qualora il possessore del bond eserciti la clausola di callability, riceverà un prestabilito numero di
azioni di compendio (ed esattamente pari a 14,286 azioni per ogni bond sottoscritto, nel caso
specifico). Dopo di chè il bond verrà estinto, per cui nè le cedole periodiche nè i ratei di interessi
verranno pagati.
Il vettore C contiene le date alle quali la callability può essere esercitata dall'investitore. Il vettore C
222
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
deve contenere le date corrispondenti alle payment date della seconda cedola annua e della terza
cedola annua (ovvero gli oggetti Pd[2] e Pd[3]). Se per una determinata data con indice #, C[#]
corrisponde ad una delle payment date Pd[2] e Pd[3] e la callability non è ancora stata esercitata,
l'investitore riceverà la cedola annua.
In relazione alla clausola di callability, nella fase di editing dobbiamo specificare il payoff
alternativo (compilando il campo "Alternative Payoff") dato, nel caso specifico, dal prodotto del
rapporto minimo di conversione (pari a 14,286) per i valori delle azioni di compendio in
corrispondenza della data corrispondente all'oggetto C[#].
Per cui il payoff alternativo sarà dato dalla seguente espressione: RcMin * V1[C[#]].
Attraverso la figura VII.5 mostriamo la fase di editing della seconda cedola annua e della terza
cedola annua corrisposte in favore del possessore del bond.
(Figura VII.5: Fase di editing della seconda cedola annua e della terza cedola annua corrisposte in favore del
possessore del bond Mandatory Convertible)
223
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Qualora la clausola di callability non venisse esercitata, il possessore del bond riceverà anche la
quarta cedola annua (la cui fase di editing viene mostrata attraverso la figura VII.6) e il bond verrà
automaticamente convertito in un certo ammontare di azioni.
(Figura VII.6: Fase di editing della quarta, ed ultima, cedola annua corrisposta in favore del possessore del
bond Mandatory Convertible)
Possiamo modellare il payoff a scadenza utilizzando un'opzione di tipo Committed dal momento
che la conversione è un evento certo. Alternativamente, possiamo stilizzare il payoff a scadenza
come una combinazione di una posizione lunga sulla media a 20 giorni della variabile sottostante,
con una posizione corta su un'opzione put di tipo europea con strike price pari a 6 euro e con una
posizione lunga su un'opzione call di tipo europea con strike price pari a 7 euro.
Con la figura VII.7 mostriamo la fase di editing del payoff a scadenza.
(Figura VII.7: Fase di editing del payoff a scadenza corrisposto in favore del possessore del bond Mandatory
Convertible)
224
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Calcoliamo il rapporto di conversione come la media a 20 giorni dei rapporti di conversione
giornalieri osservati dalla data di inizio del periodo di osservazione (ovvero a partire dalla data
corrispondente all'oggetto sd) fino alla data di fine del periodo di osservazione (ovvero a partire
dalla data corrispondente all'oggetto ed).
Per calcolare tale media utilizzeremo la funzione di Fairmat IMean la quale valuta l'espressione
compresa entro le parentesi (nel caso specifico verrà valutata la funzione f1) da sd fino a ed, e ne
calcola la media.
Modellazione del Warrant
Possiamo modellare il warrant come un'opzione call di tipo americano scritta sul medesimo
sottostante (ovvero sulle azioni di compendio BPM) con strike price indicato dalla costante strikeW
(e quindi pari a 8) e con un periodo d'esercizio compreso fra la data del 01/05/2013 (corrispondente
al valore della costante sdw) e la data del 01/06/2013 (corrispondente al valore della costante pda).
Ciascun warrant conferisce la facoltà di ricevere 9 azioni di compendio, per cui il payoff dovrà
essere moltiplicato per tale leva (rappresentata nello specifico dalla costante nw).
Con la figura VII.8 mostriamo la fase di editing del payoff relativo al warrant.
(Figura VII.8: Fase di editing del payoff relativo al warrant)
Per stimare il valore del warrant nella maniera corretta dovremo tenere conto dell'effetto di
diluizione del capitale causato dall'esercizio dei warrant e dalla conversione dei bond.
Calcoliamo il fattore di aggiustamento X come il rapporto fra l'ammontare delle azioni outstanding
(pari al caso specifico a 415.034.000) e la somma dell'ammontare delle azioni complessivamente in
circolazione e le azioni emesse a seguito dell'esercizio dei warrant e dei bond convertibili con
clausola di mandatory convertible (il cui ammontare minimo è pari a 159.973.096 mentre quello
massimo è pari a 173.883.800).
225
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Con la figura VII.8 mostriamo la fase di editing dell'operator Functional che, inserito, nell'ambiente
Option Map, ci permette di tenere conto del fattore di aggiustamento X ai fini della valutazione del
warrant.
Nel caso specifico preso in esame il fattore di aggiustamento varia da un valore minimo di 0,7 fino
ad un valore massimo di 0,72 in quanto la variabilità del rapporto di conversione del bond varia da
un valore minimo di 14,286 fino ad un valore massimo di 16,667.
(Figura VII.8: Modellazione del fattore di aggiustamento)
226
TUTORIAL VII – CONVERTENDO BPM 2009/2013 - 6,75% with WARRANT
Stima del Mark to Market
Una volta terminata la fase di modellazione del contratto in esame, possiamo procedere alla stima
del suo valore assumendo il punto di vista dell'investitore, e quindi ottenere del Mark to Market
dello stesso.
Il valore totale del bond convertibile e dell'opzione warrant è pari a 96,69.
I tabs Figure e Data descrivono la distribuzione di probabilità del Mark to Market (figura VII.9).
(Figura VII.9: Mark to Market e statistica descrittiva)
Possiamo anche prendere in considerazione il solo valore del bond convertibile cliccando
sull'opzione First Coupon con il tasto destro del mouse e selezionando successivamente la voce
Analysis e poi la voce Valuation.
227