Page: 1 | Go to End | |
Author | Topic:calcolare il valore di un'opzione cap | 2199 Views |
5 July 2012 at 10:57pm Last edited: 5 July 2012 11:32pm
Buonasera,
vorrei calcolare il valore di un’opzione cap triennale.
l'individuo A ha un contratto Mutuo triennale di 100000 su un tasso variabile libor trimestrale, per proteggersi dalle variazioni di tasso, l'individuo A stipula un interest rate cap su un nozionale di 100000 pagando un premio di 500.
Ho inserito con settings project preferences: la trading date 12/12/2010 e la data d’inizio del contratto 31/12/2010
In parameters and functions ho inserito il nozionale N(costant), il vettore date di pagamento pdu, il vettore date corretto, pd. Dal tutorial leggo che dovrei inserire questi dati:
matRate: time horizon of Floating rate expressed into year fraction ossia?
levRate: leverage on Floating rate. Come lo inserisco? non è una costante, è un vettore? debito di 100000 su un tasso variabile Libor trimestrale ed io ho tutti i Libor per ogni data.
levStk: leverage on strike (stk) rate; ?
stk: strike rate; questa è una costante ?
rday: number of days before Initial (Advance) / Ending (Arrears) period.
E poi calcolo il payoff finale.
Purtroppo non ho trovato un tutorial pratico ma solo teorico.
Spero mi riusciate a rispondere prima del weekend.
Ho un esame a breve.
Grazie per la vostra disponibilità.
Lidia
6 July 2012 at 8:32am
Ciao Lidia,
rispondo brevemente ai tuoi quesiti:
matRate: é la durata del floating rate, espressa in frazione di anno. Nel tuo caso il Libor a 3 mesi avrà matRate pari a 3/12=0.25.
levRate: leverage on Floating rate.
levStk: leverage on strike (stk) rate
stk: strike rate; questa è una costante
Questi 3 oggetti sono tutti scalari (salvo tu non abbia livelli differenti per ciascun trimestre di riferimento, in queto caso andranno inseriti come nuovi oggetti vettori). Il primo indica il moltiplicatore del floating rate, il secondo il moltiplicatore dello strike rate ed il terzo lo strike dello strumento cap che stai utilizzando. Sempre con riferimento al tuo esempio, supponendo che il soggetto abbia acquistato, pagando un premio di 500, un cap su un debito bullet (quindi costante per tutti i tre anni di durata) ponendo un livello massimo del 3%, avrai:
N*Dur*max[ (LevRate*x1-LevStk*Stk);0 ] = 100*0.25*max[ (1*x1 - 1*3%);0 ]
per ciascun trimestre. Il Dur é inserito come vettore in quanto l'aggiustamento viene automaticamente effettuato da Fairmat prendendo come riferimento il vettore iniziale pdu (come del resto viene fatto nel caso del vettore pd). Lo 0.25 é per esprimere la durata triennale di ciascun caplet che compone il cap.
rday: é il numero di giorni da sottrarre nel computo delle reset dates, ovvero le date in cui andrai a rilevare il tuo floating rate (Libor a 3 mesi). Se apri Rd, il vettore delle reset dates, sempre agganciato al vettore pdu, vedrai che in Add/Sub Days é inserito rday. Di norma la rilevazione classica é Advance 2 giorni, per cui rday é pari a 2. Ad esempio supponi che il tuo periodo di riferimento sia dal 31/12/2010 al 31/03/2011. Andrai a rilevare il tasso Libor a 3 mesi due giorni prima l'inizio di quel periodo, ovvero il 29/12/2010. L'alternativa é l'arrears, ovvero 2 giorni prima della fine del periodo, quindi il 29/03/2011.
Spero di esserti stato utile e...in bocca al lupo per il tuo esame.
Ciao
8 July 2012 at 8:34pm
Grazie, sei stato illuminante.
C'è solo un piccolo problema, la formula che mi ha fornito da inserire in analytic functions per calcolare il payoff è per trimestre, quindi per caplet.
Per calcolare il payoff dell'opzione per tutta la durata del contratto come inserisco il vettore di date (modificato di pdu) e il vettore di tassi variabili libor all'interno di quella formula che mi hai fornito?La inserisco sempre in analitic function?Le info sono:
Cap 2 anni
Data stipula contratto 31/12/2009
Data inizio contratto 31/12/2009
N = 100000 Bullet
Stk= 2%
Dur= vettore date modificato da pdu che contiene 12 date di rilevazione
LevStk= 1
Tasso variabile= Libor trimestrale. ho inserito un vettore tassi Libor, che contiene la rilevazione del Libor per ognuna delle 12 date : LibRate.
Alla formula devo sottrarre il premio di 500.
Ho fatto dei tentativi ma la sintassi evidentemente non è corretta, perchè mi dà errore.
Domanda 2: Se voglio scontare il valore dell'opzione ottenuto sopra con un tasso composto da r+un credit spread con r che segue una dinamica Cir.
Dal tutorial ho capito che dovrei fare cosi:
1) stochastic process: add stochastic process e scelgo Cir e quindi Fairmat mi dà v1 che utilizzo poi nella discounting expression. Non avendo Fairmat Professional , come si procede?
Poi una volta ottenuto v1
2)clicco su Discounting
scelgo dal menu a tendina di discounting model : Use dynamic term structure
Mentre in Discounting expression scrivo : @v1; @v2.
Se v2(il credit spread) è una costante, quindi ho il valore del credit spread come lo inserisco? o meglio dove (ad esempio tra i parameters&functions come costante)?
Grazie infinitamente, spero Lei possa aiutarmi. Fortunatamente l’esame è stato posticipato a martedi.
Grazie ancora per la vostra disponibilità.
9 July 2012 at 4:43pm
Ciao Lidia,
certamente, il payoff che ti ho fornito è relativo ad un caplet trimestrale. La formula viene utilizzata nella strip of options all'interno dell'Option Map e replicata per tutti i caplet che compongono il cap. Nel caso che mi hai sottoposto il cap è triennale e quindi avrai 12 caplet (ovvero una strip of options con contatore da 1 a 12).
Ho provato ad inserire i dati da te forniti all'interno di un template per il calcolo dell'opzione Cap, che trovi in allegato. Se apri il file e guardi nel Parameters & Functions troverai la funzione Caplet che esprime il payoff di un singolo caplet ( (LevRate*x1)-(LevStk*Stk) ). Se invece guardi l'Option Map il payoff scritto é diverso ( Caplet(rate(Rd[#];matRate;@v1)) ). Questo perchè prima definisci una funzione Caplet con n input (immagina una funzione y=f(x1,x2,x3,...,xn) ) e poi richiami la funzione stessa all'interno dell'option map assegnando alle variabili il loro rispettivo valore. Per esempio avrei potuto scrivere Caplet in Parameters & Functions come
(x2*x1)-(x3*x4), ovvero una y=f(x1,x2,x3,x4)
per poi richiamarla nell'Option map come
Caplet( rate(Rd[#];matRate;@v1);LevRate;LevStk;Stk ).
Questa sarebbe stata una dicitura più generale che mi avrebbe permesso di inserire LevRate, LevStk e Stk anche come vettori e non solo come costanti (richiamandoli tuttavia con Caplet( rate(Rd[#];matRate;@v1);LevRate[#];LevStk[#];Stk[#] per le varie strip of options).
Sempre con riferimento al tuo esempio la funzione rate(Rd[#];matRate;@v1) rappresenta il tasso con maturity 0.25 rilevato ad una data futura Rd[#] (dove il # sta ad indicare un indice che in questo caso andrà da 2 a 12) sulla base del processo v1 (in questo caso il modello di Hull-White unifattoriale). Ho appositamente escluso il primo pagamento, mettendolo su una singola opzione antecedente la strip of option perchè rd[1] è il 29/12/2009, antecedente il 31/12/2009 (ipotetica data di valutazione), per cui il tasso Libor 3M è già noto. In fairmat professional ci sarebbe stata una chiamata automatica ad una base di tassi storici, mentre in questo caso devi inserire tu, a mano, un valore (vedi hist in Parameters & Functions), separandolo quindi dalla serie di strip of options
Per il problema relativo all'inserimento del CS il modo più veloce è quello di inserire un GBM con Volatility e Growth rate nulli e Base value pari al valore di CS (ho ipotizzato 100 bps) e poi richiamare lo sconto in discounting con @v1;@v2.
Spero di esserti stato utile. Buona giornata,
Ciao
9 July 2012 at 7:50pm
Grazie infinite. Quando però cerco di aprire il file allegato risulta questa schermata You do not have permission to access this document.
10 July 2012 at 8:23am
Ciao Lidia,
prova ad andare sopra l'oggetto con il mouse, tasto destro e scegli "Salva destinazione con nome..."
Dovresti riuscire a scaricare il .fair
Ciao
2199 Views | ||
Go to Top |
Currently Online: There is nobody online.
Welcome to our latest member: User4d51