Studi e Analisi Finanziaria R2001-01a STIMA DI STRUTTURE A TERMINE: IL CASO DEI CORPORATE SPREAD FINANZIARI APPENDICI Enrico Bernini Dean Fantazzini
STIMA DI STRUTTURE A TERMINE: IL CASO DEI CORPORATE SPREAD FINANZIARI * APPENDICI Enrico Bernini ** Dean Fantazzini *** R2001-01a Editing: R. Caravaggi Milano, Settembre 2001 * Gli autori desiderano ringraziare Maila Bozzetto e Rodolfo Dozio per la preziosa discussione del presente lavoro. Si desidera ringraziare inoltre i numerosi partecipanti al dibattito successivo alla presentazione del documento presso Studi e Analisi Finanziaria - IntesaBci nel mese di settembre 2001. Gli errori rimasti sono nostri. ** Studi e Analisi Finanziaria IntesaBci e-mail: enricobernini@intesabci.it *** Facoltà di Economia - Università di Bologna e-mail: deanfa@tin.it
3 APPENDICE A: CODICE VBA PER IL CALCOLO DI UNA B-SPLINE CUBICA. 1) Il codice che qui si presenta è stato quello utilizzato in ambito Excel al fine di calcolare delle B-spline cubiche per uno spazio di approssimazione diviso in n = 4 intervalli, e quindi attraversato da n + k = 7 splines. I nodi complessivi, compresi quelli esterni allo spazio di approssimazione, sono quindi undici. Function bs3gen7spline(inizio, fine, Valore, nodo1, nodo2, nodo3, nodo4, nodo5, nodo6, nodo7, nodo8, nodo9, nodo10, nodo11) Application.Volatile False primointervallo = nodo2 - nodo1 primointervallo = nodo3 - nodo2 primointervallo = nodo4 - nodo3 primointervallo = nodo5 - nodo4 Case nodo5 primointervallo = nodo6 - nodo5 Case nodo6 primointervallo = nodo7 - nodo6 Case nodo7 primointervallo = nodo8 - nodo7 primointervallo = 0
4 secondointervallo = nodo3 - nodo1 secondointervallo = nodo4 - nodo2 secondointervallo = nodo5 - nodo3 secondointervallo = nodo6 - nodo4 Case nodo5 secondointervallo = nodo7 - nodo5 Case nodo6 secondointervallo = nodo8 - nodo6 Case nodo7 secondointervallo = nodo9 - nodo7 secondointervallo = 0
5 terzointervallo = nodo4 - nodo1 terzointervallo = nodo5 - nodo2 terzointervallo = nodo6 - nodo3 terzointervallo = nodo7 - nodo4 Case nodo5 terzointervallo = nodo8 - nodo5 Case nodo6 terzointervallo = nodo9 - nodo6 Case nodo7 terzointervallo = nodo10 - nodo7 terzointervallo = 0
6 quartointervallo = nodo5 - nodo1 quartointervallo = nodo6 - nodo2 quartointervallo = nodo7 - nodo3 quartointervallo = nodo8 - nodo4 Case nodo5 quartointervallo = nodo9 - nodo5 Case nodo6 quartointervallo = nodo10 - nodo6 Case nodo7 quartointervallo = nodo11 - nodo7 quartointervallo = 0
7 If (Valore > inizio) And (Valore <= (inizio + primointervallo)) b10 = (Valore - inizio) / (primointervallo * secondointervallo) ElseIf (Valore > (inizio + primointervallo)) And (Valore <= (inizio + secondointervallo)) b10 = (inizio + secondointervallo - Valore) / (secondointervallo * primointervallo) Else b10 = 0 End If If (Valore > (inizio + primointervallo)) And (Valore <= (inizio + secondointervallo)) b11 = (Valore - (inizio + primointervallo)) / ((secondointervallo - primointervallo) * (terzointervallo - primointervallo)) ElseIf (Valore > (inizio + secondointervallo)) And (Valore <= (inizio + terzointervallo)) b11 = (inizio + terzointervallo - Valore) / ((terzointervallo - primointervallo) * (terzointervallo - secondointervallo)) Else b11 = 0 End If
8 If (Valore > (inizio + secondointervallo)) And (Valore <= (inizio + terzointervallo)) b12 = (Valore - (inizio + secondointervallo)) / ((terzointervallo - secondointervallo) * (quartointervallo - secondointervallo)) ElseIf (Valore > (inizio + terzointervallo)) And (Valore <= (inizio + quartointervallo)) b12 = (inizio + quartointervallo - Valore) / ((quartointervallo - secondointervallo) * (quartointervallo - terzointervallo)) Else b12 = 0 End If b20 = ((Valore - inizio) * b10 + (inizio + terzointervallo - Valore) * b11) / (terzointervallo) b21 = ((Valore - (inizio + primointervallo)) * b11 + (inizio + quartointervallo - Valore) * b12) / (quartointervallo - primointervallo) bs3gen7spline = ((Valore - inizio) * b20 + (inizio + quartointervallo - Valore) * b21) / (quartointervallo) End Function
9 2) Il codice seguente è invece riferito al caso in cui nel campione sono considerati anche i titoli ventennali e trentennali: il codice è praticamente uguale a prima, mentre cambia il numero dei nodi, che in questo caso è pari a tredici. Function bs3gen7spline(inizio, fine, Valore, nodo1, nodo2, nodo3, nodo4, nodo5, nodo6, nodo7, nodo8, nodo9, nodo10, nodo11, nodo12, nodo13) Application. Volatile False primointervallo = nodo2 - nodo1 primointervallo = nodo3 - nodo2 primointervallo = nodo4 - nodo3 primointervallo = nodo5 - nodo4 Case nodo5 primointervallo = nodo6 - nodo5 Case nodo6 primointervallo = nodo7 - nodo6 Case nodo7 primointervallo = nodo8 - nodo7 Case nodo8 primointervallo = nodo9 - nodo8 Case nodo9 primointervallo = nodo10 - nodo9 primointervallo = 0
10 secondointervallo = nodo3 - nodo1 secondointervallo = nodo4 - nodo2 secondointervallo = nodo5 - nodo3 secondointervallo = nodo6 - nodo4 Case nodo5 secondointervallo = nodo7 - nodo5 Case nodo6 secondointervallo = nodo8 - nodo6 Case nodo7 secondointervallo = nodo9 - nodo7 Case nodo8 secondointervallo = nodo10 - nodo8 Case nodo9 secondointervallo = nodo11 - nodo9 secondointervallo = 0
11 terzointervallo = nodo4 - nodo1 terzointervallo = nodo5 - nodo2 terzointervallo = nodo6 - nodo3 terzointervallo = nodo7 - nodo4 Case nodo5 terzointervallo = nodo8 - nodo5 Case nodo6 terzointervallo = nodo9 - nodo6 Case nodo7 terzointervallo = nodo10 - nodo7 Case nodo8 terzointervallo = nodo11 - nodo8 Case nodo9 terzointervallo = nodo12 - nodo9 terzointervallo = 0
12 quartointervallo = nodo5 - nodo1 quartointervallo = nodo6 - nodo2 quartointervallo = nodo7 - nodo3 quartointervallo = nodo8 - nodo4 Case nodo5 quartointervallo = nodo9 - nodo5 Case nodo6 quartointervallo = nodo10 - nodo6 Case nodo7 quartointervallo = nodo11 - nodo7 Case nodo8 quartointervallo = nodo12 - nodo8 Case nodo9 quartointervallo = nodo13 - nodo9 quartointervallo = 0
13 If (Valore > inizio) And (Valore <= (inizio + primointervallo)) b10 = (Valore - inizio) / (primointervallo * secondointervallo) ElseIf (Valore > (inizio + primointervallo)) And (Valore <= (inizio + secondointervallo)) b10 = (inizio + secondointervallo - Valore) / (secondointervallo * primointervallo) Else b10 = 0 End If If (Valore > (inizio + primointervallo)) And (Valore <= (inizio + secondointervallo)) b11 = (Valore - (inizio + primointervallo)) / ((secondointervallo - primointervallo) * (terzointervallo - primointervallo)) ElseIf (Valore > (inizio + secondointervallo)) And (Valore <= (inizio + terzointervallo)) b11 = (inizio + terzointervallo - Valore) / ((terzointervallo - primointervallo) * (terzointervallo - secondointervallo)) Else b11 = 0 End If
14 If (Valore > (inizio + secondointervallo)) And (Valore <= (inizio + terzointervallo)) b12 = (Valore - (inizio + secondointervallo)) / ((terzointervallo - secondointervallo) * (quartointervallo - secondointervallo)) ElseIf (Valore > (inizio + terzointervallo)) And (Valore <= (inizio + quartointervallo)) b12 = (inizio + quartointervallo - Valore) / ((quartointervallo - secondointervallo) * (quartointervallo - terzointervallo)) Else b12 = 0 End If b20 = ((Valore - inizio) * b10 + (inizio + terzointervallo - Valore) * b11) / (terzointervallo) b21 = ((Valore - (inizio + primointervallo)) * b11 + (inizio + quartointervallo - Valore) * b12) / (quartointervallo - primointervallo) bs3gen7spline = ((Valore - inizio) * b20 + (inizio + quartointervallo - Valore) * b21) / (quartointervallo) End Function
15 APPENDICE B: CODICE VBA PER IL CALCOLO DI UNA B-SPLINE QUADRATICA. Il codice qui esposto è quello utilizzato al fine di calcolare lo spread della curva corporate rispetto a quella government. Poiché lo spazio di approssimazione è in questo caso diviso in n = 2 intervalli, le splines calcolate sono state n + k = 4, mentre i nodi complessivi sono sette. Function bs2quad4spli(inizio, fine, Valore, nodo1, nodo2, nodo3, nodo4, nodo5, nodo6, nodo7) Application.Volatile False primointervallo = nodo2 - nodo1 primointervallo = nodo3 - nodo2 primointervallo = nodo4 - nodo3 primointervallo = nodo5 - nodo4 primointervallo = 0
16 secondointervallo = nodo3 - nodo1 secondointervallo = nodo4 - nodo2 secondointervallo = nodo5 - nodo3 secondointervallo = nodo6 - nodo4 secondointervallo = 0 terzointervallo = nodo4 - nodo1 terzointervallo = nodo5 - nodo2 terzointervallo = nodo6 - nodo3 terzointervallo = nodo7 - nodo4 terzointervallo = 0
17 If (Valore > inizio) And (Valore <= (inizio + primointervallo)) bspline10 = (Valore - inizio) / (primointervallo * secondointervallo) ElseIf (Valore > (inizio + primointervallo)) And (Valore <= (inizio + secondointervallo)) bspline10 = (inizio + secondointervallo - Valore) / (secondointervallo * primointervallo) Else bspline10 = 0 End If If (Valore > (inizio + primointervallo)) And (Valore <= (inizio + secondointervallo)) bspline11 = (Valore - (inizio + primointervallo)) / ((secondointervallo - primointervallo) * (terzointervallo - primointervallo)) ElseIf (Valore > (inizio + secondointervallo)) And (Valore <= (inizio + terzointervallo)) bspline11 = (inizio + terzointervallo - Valore) / ((terzointervallo - primointervallo) * (terzointervallo - secondointervallo)) Else bspline11 = 0 End If bs2quad4spli = ((Valore - inizio) * bspline10 + (inizio + terzointervallo - Valore) * bspline11) / (terzointervallo) End Function
18 Ultimi studi apparsi nella collana "Ricerche" R99-3 A. Fabbri, Sistemi finanziari nazionali e grado di competitività delle imprese, Marzo 1999 R99-4 A. Fabbri, Implicazioni della Pecking order theory sul comportamento finanziario delle imprese italiane: un ipotesi di indagine, Marzo 1999 R99-5 A. Fabbri, Principali implicaziioni della pecking order theory: una verifica empirica, Marzo 1999 R99-6 F. Addolorato - A. Ancona S. Giudici E. Laruccia, L utilizzo dell intelligenza artificiale nei processi di asset allocation, Maggio 1999 R99-7 S. Trenti, La competitività tecnologica dei settori industriali italiani: una analisi empirica, Luglio 1999 R99-8 U. Cherubini G. Della Lunga, Stress Testing Techniques and Value at-risk Measures: A Unified Approach, July 1999 R99-9 M. Esposito E. Laruccia, Exchange Rates Statistical Properties Implied in FX Options, December 1999 R99-10 M. Esposito, Hedge Funds: la loro attività e le proposte di regolamentazione, Dicembre 1999 R99-11 G. Femminis L. Ruggerone, Crony Capitalism, Bail-outs and Bank Runs, December 1999 R99-12 G. De Felice M. Esposito E. Laruccia, La struttura settoriale del mercato azionario europeo, Dicembre 1999 R00-01 E. Laruccia D. Revoltella, Banking system stability in developing and transition economies: an analysis of the determinants of moody s bank financial strength rating, January 2000 R00-02 V. Lazzari E. Laruccia, La misurazione del rischio di credito per un portafoglio di finanziamenti bancari, Febbraio 2000 R00-03 M. Ciampolini - Bernd Rohde, Money market integration: a market perspective, May 2000 R00-04 F. Guelpa S. Trenti, Human capital and the competitiveness of italian industry, May 2000 R00-05 A. Jamaleh, Explaining and forecasting the euro/dollar exchange rate. Using threshold models to capture non-linearities triggered by business cycle developments and equity markets dynamics, September 2000 R00-06 A. Baglioni R. Hamaui, The choice among alternative payment systems: the European experience, September 2000 R01-01 E. Bernini D. Fantazzini, Funzioni Spline per la stima di strutture a termine: il caso dei Corporate Spread Finanziari, Settembre 2001 R01-01a E. Bernini D. Fantazzini, Appendici. Stima di strutture a termine: il caso dei Corporate Spread Finanziari, Settembre 2001
19 IL VOSTRO INDIRIZZO È CORRETTO? (per favore scrivete in stampatello) NOME... SOCIETÀ...... INDIRIZZO... CITTÀ... PROVINCIA... CAP-ZIP... STATO... Da restituire a: INTESABCI SpA Settore Studi e Analisi Finanziaria via Borgonuovo 2 20121 Milano fax (02) 88507195-6592469 (CR) IntesaBci Rete Comit è presente su Internet all'indirizzo http://www.bci.it
Stampato dal Centro Stampa di IntesaBci Milano 2001 20