Educational e FAQ Trading su Obbligazioni (un cruscotto per i bond) (1 Viewer)

onik

Forumer attivo
Grazie dell'interessamento.

Dando un'occhiata veloce, la formula Excel (per non usare il Risolutore) e'

Nel caso di YTM: TIR.X (Funzione TIR.X)

Nel caso di I-spread, Z-spread, ASW-spread: TIR.VAR (Funzione TIR.VAR)

P.S.

Nel caso di OAS-spread e' piu' complicato, perche' in quel caso devi valutare ogni Bond come somma algebrica di contestuali posizioni obbligazionarie e posizioni derivative sintetiche. Preferirei tenere l'argomento OAS per ultimo, anche perche' questa valutazione non e' prevista nel cruscotto di trading che si occupa solo di obbligazioni cosiddette "plain vanilla", mentre l'OAS fa la sua bella figura piu' sulle obbligazioni strutturate e sui certificati.

Ciao a tutti
ed un grazie per l'interessante discussione.
Ho scaricato l'excel iniziale e riprodotto i calcoli dello z-spread su un foglio excel usando il "risolutore" di excel come suggerito. Tutto ok.

Vi chiedo pero' come si riesce a utilizzare la TIR.VAR (MIRR per excel in inglese) per il calcolo dello z-spread.

In fondo e' la risoluzione di un'equazione polinomiale di grado n (n = grado del polinomio) , ho quindi capito perche reef ha utilizzato il metodo di Newton che poi e' quasi l'equivalente del risolutore (metodo try and error)
Un grazie
ciao
 

onik

Forumer attivo
.. cut ...
Il risolutore di Excel effettivamente non piace, perche' l'algoritmo del simplesso e' del tutto inadeguato per un massivo number crunching: prova 100 percorsi e poi spara un numero quasi a caso sul primo punto di sella.

Per gli scopi operativi del cruscotto ci vorrebbe almeno una funzione "compilata" di Excel , in quanto il risolutore e' utile solo a scopi didattici.
... cut ..

Ho fatto solo un paio di prove e il risolutore sembra funzionare discretamente.
Chiaro che se hai uno sheet con 1000 obbligazioni potrebbe richiedere un po' di tempo. Non e' detto che con una UDF in visual basic alla fine la soluzione sia piu' rapida anche se non lo escludo (non sono un esperto).
 

onik

Forumer attivo
Un codice VBA non sara' piu' rapido, ma almeno con una funzione definita utente (Udf) il processo diviene automatizzato, mentre con 1000 obbligazioni devi lanciare il Solver per ognuna.

... cut ...

Forse c'e un malinteso, guarda che il risolutore di excel e' semplicemente l'interfaccia grafica del metodo GoalSeek in visual basic.
Quindi basta UNA riga di visual basic per fare il calcolo dello z-spread, che puoi anche incapsulare in una funzione utente UDF.
Excel permette anche di impostare delle condizioni ai "risolutori" (funzione Solver), in modo che se tempi di non trovare la soluzione/radice corretta lo puoi in qualche modo guidare. Ma in questo caso non mi sembra necessario.
La semplice GoalSeek e' piu' che sufficiente.
 

reef

...
Forse c'e un malinteso, guarda che il risolutore di excel e' semplicemente l'interfaccia grafica del metodo GoalSeek in visual basic.
Quindi basta UNA riga di visual basic per fare il calcolo dello z-spread, che puoi anche incapsulare in una funzione utente UDF.
Excel permette anche di impostare delle condizioni ai "risolutori" (funzione Solver), in modo che se tempi di non trovare la soluzione/radice corretta lo puoi in qualche modo guidare. Ma in questo caso non mi sembra necessario.
La semplice GoalSeek e' piu' che sufficiente.

Concordo pienamente, infatti GoalSeek è ampiamente utilizzata in diversi fogli di pubblico dominio.
Un ottimo tutorial con esempio: http://excel.kingofmath.com/?p=267
 
Ultima modifica:

onik

Forumer attivo
Ok, grazie, non me lo ricordavo. Io intedevo semplicemente riferirmi al fatto che il Solver non mi piace perche' credo sia interpretato mentre il TIR e altre funzioni simili dovrebbero essere compilate e quindi preferibili.
Resta sempre sospesa la domanda se sia possibile calcolare z-spread senza uso del solver (non lo credo, tutti parlano di procedimenti iterativi)

Anche il TIRX fa procedimenti iterativi, ok e' built-in ma sempre iterativi.

googlelando: "XIRR() uses Newman’s method (an iterative process) to calculate your returns"

Il problema matematico e' quello di trovare delle radici a dei polinomi e come tale essendo i polinomi generici tutti i metodi (che io sappia) sono iterativi (ad esempio quello di Newton). Probabilmente TIRX e' ottimizzato perche' sa che si tratta di polinomi mentre la goalSeek non conosce la funzione che c'e dietro ma va solo a tentativi (try and error).
Nel momento che basta una riga di VisualBasic personalmente (poi ognuno e' libero di fare cio' che gli pare) non starei a cercare la soluzione PERFETTA.
Tanto se goalSeek da un risultato sballato lo si vedrebbe a occhio.
 

reef

...
Anche il TIRX fa procedimenti iterativi, ok e' built-in ma sempre iterativi.
googlelando: "XIRR() uses Newman’s method (an iterative process) to calculate your returns"

Il problema matematico e' quello di trovare delle radici a dei polinomi e come tale essendo i polinomi generici tutti i metodi (che io sappia) sono iterativi (ad esempio quello di Newton). Probabilmente TIRX e' ottimizzato perche' sa che si tratta di polinomi mentre la goalSeek non conosce la funzione che c'e dietro ma va solo a tentativi (try and error).
Nel momento che basta una riga di VisualBasic personalmente (poi ognuno e' libero di fare cio' che gli pare) non starei a cercare la soluzione PERFETTA.
Tanto se goalSeek da un risultato sballato lo si vedrebbe a occhio.

Risultato preliminare con il GoalSeek, in pochi secondi restituisce un centinaio di risultati, ciascuno su una decina di radici. Non ho ancora la sensibilità per capire bene i numeri che vengono restituiti (sembrano quasi "a casaccio", ma sono prezzi vecchi e OTC con spread bid/ask ampi a piacere, e forse c'è ancora qualche bug)

Ricordo che per il calcolo corretto bisogna aggiungere il rateo maturato al prezzo di acquisto.

1327419026zspread.jpg
 
Ultima modifica:

onik

Forumer attivo
Risultato preliminare con il GoalSeek, in pochi secondi restituisce un centinaio di risultati, ciascuno su una decina di radici. Non ho ancora la sensibilità per capire bene i numeri che vengono restituiti (sembrano quasi "a casaccio", ma sono prezzi vecchi e OTC con spread bid/ask ampi a piacere, e forse c'è ancora qualche bug)

Ricordo che per il calcolo corretto bisogna aggiungere il rateo maturato al prezzo di acquisto.

Non ho ben capito cosa intendi con "ciascuno su una decina di radici"
Polinomi di grado 10?

Prova a inserire il numero ottenuto e verifcare che l'equazione sia soddisfatta.

E poi magari fare un grafico del polinomio con qualche tool per vedere le radici dove sono.
 

reef

...
Non ho ben capito cosa intendi con "ciascuno su una decina di radici"
Polinomi di grado 10?

Prova a inserire il numero ottenuto e verifcare che l'equazione sia soddisfatta.

E poi magari fare un grafico del polinomio con qualche tool per vedere le radici dove sono.

Niente best fit polinomiale, ho usato il GoalSeek, che penso usi il metodo delle secanti. La funzione da approssimare è monotòna e non ha singolarità, per cui il risultato dovrebbe essere corretto.
Nei pochi casi dove il metodo non funziona escono risultati senza senso.
Per ora è sufficiente, poi proverò un metodo manuale che magari darà qualche informazione in più.
 

reef

...
Se ci aggiungessi una "sfinca" del rendimento ( :D sfinca e' un termine dialettale per indicare una colonna) a lato del z-spread , potremmo capire quali sono i risultati senza senso (oltre ai dati negativi, ovviamente)
Ciao

OK, vi giro il link http://www.mypf.it/pricing.htm
Il Gross YTM è calcolato come
cedola/prezzoattuale + (100-prezzoattuale)/anni_fino_a_maturity

Nel Gross YTM non c'è il rateo, nello z-spread invece è aggiunto al prezzo corrente.
Il Delta è banalmente Gross-Zspread e, quando è negativo, presumo una forte influenza del rateo.

Ciao
 
Ultima modifica:

GlobalMacro

Forumer attivo
Forse c'e un malinteso, guarda che il risolutore di excel e' semplicemente l'interfaccia grafica del metodo GoalSeek in visual basic.

Non è così, il GoalSeek è stato programmato dalla Microsoft, implementa il metodo di Newton (presumibilmente, non esiste molto di scritto, in stile MS), mentre il risolutore, il Solver è della Frontline, Excel Solver, Optimization Software, Monte Carlo Simulation, Data Mining - Frontline Systems, risolve problemi di programmazione lineare e non lineare, la versione base è data in bundle con Excel, la versione Premium e superiori può essere acquistata a parte dalla Frontline.
Entrambi, GoalSeek e Solver possone essere chiamati da Visual Basic.
 

Users who are viewing this thread

Alto