IniziaInizia gratis

Usa la funzione uniroot per trovare lo YTM

Il metodo per tentativi è piuttosto macchinoso. Un’alternativa è usare un algoritmo che faccia il lavoro al posto tuo. In questo caso, la soluzione del problema equivale a trovare lo zero di una funzione.

In questo esercizio userai la funzione uniroot() per trovare lo zero.

La funzione uniroot() richiede di impostare un vettore di flussi di cassa, cf, che inizi con il prezzo dell’obbligazione (come numero negativo) come primo elemento e con i flussi di cassa che ti aspetti di ricevere dall’obbligazione (cioè cedole e rimborso del capitale) come elementi restanti.

Ricorda che il prezzo dell’obbligazione è $95.79 e che l’obbligazione ha un valore nominale di $100, una cedola del 5% e 5 anni alla scadenza.

Questo esercizio fa parte del corso

Valutazione e analisi delle obbligazioni in R

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un vettore di flussi di cassa, cf, che includa il prezzo iniziale dell’obbligazione (negativo) e i pagamenti fino alla scadenza (positivi).
  • Usa il codice precompilato per creare una semplice funzione di valutazione obbligazionaria, bval(), che calcoli il valore dell’obbligazione a ciascun periodo.
  • Usa il codice precompilato per creare la funzione ytm() usando uniroot().
  • Usa ytm() con il tuo vettore cf per trovare il rendimento a scadenza dell’obbligazione.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)

# Create bond valuation function
bval <- function(i, cf,
     t=seq(along = cf))
     sum(cf / (1 + i)^t)

# Create ytm() function using uniroot
ytm <- function(cf) {
    uniroot(bval, c(0, 1), cf = cf)$root
}

# Use ytm() function to find yield


Modifica ed esegui il codice