Omvandla koden till en funktion

Obligationsvärdering och analys i R

Clifford Ang

Senior Vice President, Compass Lexecon

Funktion för obligationsvärdering

  • Vi värderar många obligationer i den här kursen
  • Stegen från föregående kapitel upprepas
  • Vi skapar funktionen bondprc() för att förenkla beräkningarna
Obligationsvärdering och analys i R

Steg i obligationsvärdering

  • Generalisera dessa indata:
    • p för nominellt värde
    • r för kupongränta
    • ttm för löptid
    • y för avkastning
  • Vi gör även delar av koden mer generell
Obligationsvärdering och analys i R

Steg i obligationsvärdering

cf <- c(rep(p * r, ttm - 1), p * (1 + r))
  • rep(x, y) - upprepar värdet x, y gånger
  • x = p * r = kupongbetalning
  • y = ttm - 1 = obligationens löptid minus ett år
  • p * (1 + r) = nominellt belopp + sista kupongbetalning
Obligationsvärdering och analys i R

Steg i obligationsvärdering

cf <- data.frame(cf)
  • Konvertera till en dataram för att kunna lägga till variabler (samma som i föregående avsnitt)
cf$t <- as.numeric(rownames(cf))
  • Skapa ett tidsindex för diskontering
    • rownames() för cf-vektorn är 1, 2, 3, 4, upp till obligationens ttm
    • as.numeric() krävs för att säkerställa att värdena läses som tal
Obligationsvärdering och analys i R

Steg i obligationsvärdering

cf$pv_factor <- 1 / (1 + y)^cf$t
  • Beräkna nuvärdesfaktorn
cf$pv <- cf$cf * cf$pv_factor
  • Beräkna nuvärdet för varje kassaflöde
sum(cf$pv)
  • Summera nuvärden för att få obligationens värde
Obligationsvärdering och analys i R

Slå ihop koden

  • Skapa funktionen bondprc()
  • Den tar p, r, ttm och y som indata
bondprc <- function(p, r, ttm, y){
   cf <- c(rep(p * r, ttm - 1), p * (1 + r))
   cf <- data.frame(cf)
   cf$t <- as.numeric(rownames(cf))
   cf$pv_factor <- 1 / (1 + y)^cf$t
   cf$pv <- cf$cf * cf$pv_factor
   sum(cf$pv)
}
Obligationsvärdering och analys i R

Nu kör vi en övning!

Obligationsvärdering och analys i R

Preparing Video For Download...