Evaluacion de Procesos 4

Eduardo Falcon Shareva


1. La madurez (T) en años y precios en dolares de bonos cupon cero se encuentran en el archivo ZeroPrices.txt. Los precios estan expresados en porcentajes del par value. El modelo NelsonSiegel con tasa de forward es: r(T; θ1, θ2, θ3, θ4) = θ1 + (θ2 + θ3T)exp(−θ4T). Realice una regresión no-lineal para estimar los parámetros θ1, θ2, θ3, θ4.
  1. ¿Cuáles son sus estimaciones para θ1,θ2,θ3 y θ4?
c.0<- min(ZeroPrices$maturity)*0.5
modelo1 <- lm(log(maturity - c.0) ~ periodo, data=ZeroPrices)
pred1<-predict(modelo1)
start <- list(a=0.0001, d=-0.0001)
nonlin_mod= 
nonlin_mod1<-nls2(maturity1~a+(pred1)*exp(-d*periodo),start=start, data=ZeroPrices, trace = FALSE, algorithm="port")
summary(modelo1)
## 
## Call:
## lm(formula = log(maturity - c.0) ~ periodo, data = ZeroPrices)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2374 -0.1185  0.4252  0.5392  0.7223 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   8.6468     3.5304   2.449    0.019 *
## periodo      -1.1422     0.6239  -1.831    0.075 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.053 on 38 degrees of freedom
## Multiple R-squared:  0.08105,    Adjusted R-squared:  0.05687 
## F-statistic: 3.352 on 1 and 38 DF,  p-value: 0.07498
summary(nonlin_mod1)
## 
## Formula: maturity1 ~ a + (pred1) * exp(-d * periodo)
## 
## Parameters:
##   Estimate Std. Error t value Pr(>|t|)    
## a -0.02899    0.04610  -0.629    0.533    
## d  0.47287    0.05196   9.101 4.38e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.06327 on 38 degrees of freedom
## 
## Algorithm "port", convergence message: relative convergence (4)
  • En este caso los valores θ1 = 0.78785, θ2 = 4.0416, θ3 = -1.1422, θ4 = 0.22799

  • Por lo tanto aplicando estas tecnicas de aproximación quedaria de la siguiente manera: maturity1~0.78785+(4.0416-1.1422periodo)exp(-0.22799*periodo)

  • Que sería la ecuación de regresion no-lineal de mejor ajuste. Con un valor del coeficiente de determinación de bajo ajuste pero es la mejor dado que este tipo de algortimos usan metodología de aproximación sucesivas de Taylor, por regla matemática mejor se ajusta a los datos.

  1. Grafique la curva de rendimientos empírica y la curva de rendimientos estimada en una misma figura.

  • Se puede observar en la grafica que la curva tiene un buen ajuste a los datos y es convexa al origen.

2. Un bono cupón cero con valor nominal $ 1 000 y madures a 5 años se vende a $ 828. Asuma que existe una tasa forward r de capitalización continua y constante.
  1. Determine el valor de r.
Vf=1000   # Valor facial
Vp=828    # Precio del bono
t=5       # Tiempo de maduración  

r=((Vf/Vp)^(1/t))-1
r
## [1] 0.03846995
  • El valor de r es 3.84%
  1. Suponga que en 1 año la tasa r cambia a 4.25 %. ¿Cuál es el precio del bono?
Vf=1000        #Valor facial
r_2=0.0425     #Tasa r
t=5            #Tiempo de maduración

Vp_2= Vf/((1+r)*(1+r_2)^(t-1)) 
Vp_2
## [1] 815.2707
  • El precio del bono es $815.27
  1. Si compró el bono a $ 828 y lo vendió 1 año después al precio determinado en (b).Determine el retorno neto.
Vp_2 = 815.2707
Vp = 828
ValorInv=Vp_2 - Vp
ValorInv
## [1] -12.7293
  • El valor del retorno es -12.72$

3. Suponga que la tasa forward es r(t) = 0,028 + 0,00042t
  1. Cuál es el rendimiento al vencimiento de un bono a 20 años.
t = 20
r = 0.028 + 0.00042*t/2
r
## [1] 0.0322
  • El rendimiento es de 3.22%.
  1. Cuál es el precio de un bono cupon cero con valor nominal $ 1 000 y madurez a 15 años.
vf = 1000
r=0.028 + 0.00042*t/2
r
## [1] 0.0322
t=15
r_3 <- vf / ((1+r) ^ (t))
r_3
## [1] 621.6446
  • La tasa de madurez es 3.43%. El precio del bono con cupón cero es 621.64

4. Suponga que la tasa forward es r(t) = 0,028 + 0,0002t − 0,0003t^2
  1. ¿Cuál es el rendimiento al vencimiento de un bono a 8 años?
t=8
r=0.028 + 0.0002*t - 0.0003*t^2
r
## [1] 0.0104
  • El valor del rendimiento es 1.04%
  1. ¿Cuál es el precio de un bono cupón cero con valor nominal $ 1000 y madures a 5 años?
t=5
r=0.028 + 0.0002*t - 0.0003*t^2
r
## [1] 0.0215
VN=1000
P=VN/(1+r)^t
P
## [1] 899.1003
  • La tasa de madurez es 2.15%. El precio del bono con cupon cero es 899.10.
  1. Grafique la curva de rendimiento y tasas forward. ¿Cuáles son cóncavas y cuáles son convexas? ¿Cómo se diferencian?
#install.packages("ggplot2")
library(ggplot2)
ggplot(data.frame(x=c(0, 100)), aes(x)) +stat_function(fun=function(x) 0.028 + 0.0002*x - 0.0003*x^2)

  • La gráfica de la parábola es decreciente y es cóncava al origen.
  1. Suponga que compra un bono cupón cero con vencimiento a 10 años y los vende un año después. ¿Cuál sería el retorno si la tasa forward no cambia en ese año?
t=10
r=0.028 + 0.0002*t - 0.0003*t^2
r
## [1] 0
t=11
r=0.028 + 0.0002*t - 0.0003*t^2
r
## [1] -0.0061
  • El valor de la tasa de retorno es cero. Para el siguiente año es negativa.

5. El siguiente código calcula el precio de un bono dado el pago del cupón, madurez del bono, retorno a la madurez y valor nominal.
bondvalue = function (c, T , r , par)
{
# Computes bv = bond values ( current prices ) corresponding
# to all values of yield to maturity in the
# input vector r
#
# INPUT
# c = coupon payment ( semiannual )
# T = time to maturity (in years )
# r = vector of yields to maturity ( semiannual rates )
# par = par value
#
bv = c / r + (par - c / r ) * (1 + r )^( -2 * T )
bv
}
Utilice la funcion uniroot ( ) para resolver las siguiente preguntas.
  1. Utilice la funcion uniroot() para encontrar la madurez de un bono con madurez a 30 años y valor nominal de $ 1000 con cupones de $ 40 que se vende a $ 1200.
c= 40     # Cupón
T=30      # Tiempo de maduración
r=0       # Retorno a la madurez
par=1000  # Valor facial del bono
bv=1200   # Precio del actual del bono
uniroot(function(r) bv-(c/r+(par-c/r)*(1+r)^(-2*T)), interval= c(0.0001, 1), tol = 1e-9)$root
## [1] 0.03239813
  • El valor de la madurez es 3.24%
  1. Determine el retorno a la madurez de un bono con valor nominal $ 10 000 que se vende a $ 9800 con pago de cupones semi-anuales de $ 280 y madurez de 8 años.
c=280      # Cupón
T=8        # Tiempo de maduración
r=0        # Retorno a la madurez
par=10000  # Valor facial del bono
bv=9800    # Precio del actual del bono
uniroot(function(r) bv-(c/r+(par-c/r)*(1+r)^(-2*T)), interval= c(0.0001, 1), tol = 1e-9)$root
## [1] 0.0295872
  • El valor de la madurez es 2.96%
  1. Utlice la función uniroot() para hallar el retorno a la madurez de un bono a 20 años con valor nominal $ 1 000 y cupón semi-anual de $ 35 que se vende a $ 1 050.
c=35       # Cupón
T=20       # Tiempo de maduración
r=0        # Retorno a la madurez
par=1000   # Valor facial del bono
bv=1050    # Precio del actual del bono
uniroot(function(r) bv-(c/r+(par-c/r)*(1+r)^(-2*T)), interval= c(0.0001, 1), tol = 1e-9)$root
## [1] 0.03274004
  • El valor de la madurez es 3.27%
  1. El retorno a la madurez de un bono es 0,035 en un bono con valor nominal de 1 000, un precio de $ 950,10 y madurez a 5 anos. ¿Cuál es el valor del cupón?
c=0          # Cupón
T=5          # Tiempo de maduración
r=0.035      # Retorno a la madurez
par=1000     # Valor facial del bono
bv=950.10    # Precio actual del bono

uniroot(function(c) bv-(c/r+(par-c/r)*(1+r)^(-2*T)), interval= c(0, 100), tol = 1e-9)$root
## [1] 28.99996
  • El valor del cupón es $29.