library(ggplot2)
library(numDeriv)
Ejercicio 9 Un fondo ofrece un plan de retiro que, a través de una serie de pagos de $12,000 realizados durante los siguientes 10 años, empieza a pagar dentro de 35 años el monto de $100,000 durante los próximos 15 años. Todos los pagos son mensuales a periodo vencido. ¿Qué tasa de interés convertible mensualmente está ofreciendo el fondo?
Tenemos los siguientes datos:
120 = pagos realizados durante los siguientes 10 años 12,000 = Monto de los pagos de los siguientes 10 años
180 = pagos recibidos después de 35 años, y por 15 años 100,000 = Monto de los pagos recibidos dentro de 35 años
Hagamos una línea del tiempo:
Haremos el Valor Presente de ambas anualidades en el año 0. \[ \text{Tomaremos } {{a_{n}}} \text{ como la notación de la anualidad vencida} \] \[ \text{Recordando la fórmula, } {{a_{n}}} = k \cdot\frac{1-v^n}{i} \]
\[ \Rightarrow {{a_{120}}} = 12,000 \cdot\frac{1-v^{120}}{i} = 12,000\cdot\frac{(1-\frac{1}{(1+i)^{120}})}{i} \]
\[ {{a_{180}}} = 100,000 \cdot\frac{1-v^{180}}{i} = 100,000\cdot\frac{(1-\frac{1}{(1+i)^{180}})}{i} \]
Debe suceder que
\[ \frac{12,000}{i}\cdot(1-\frac{1}{(1+i)^{120}}) = \frac{100,000}{i}\cdot(1-\frac{1}{(1+i)^{180}})\cdot\frac{1}{(1+i)^{420}} \]
Lo cual es equivalente a que \[ 12,000\cdot(1-\frac{1}{(1+i)^{120}}) = 100,000\cdot(1-\frac{1}{(1+i)^{180}})\cdot\frac{1}{(1+i)^{420}} \] Que es lo mismo que resolver lo siguiente: \[ 12,000\cdot (1-\frac{1}{(1+i)^{120}}) - \frac{100,000}{(1+i)^{420}}\cdot(1-\frac{1}{(1+i)^{180}}) = 0 \] Resolveremos la ecuación utilizando el método de Newton-Raphson
#Integración del algoritmo iterativo
newton_raphson <- function(f, x0, tol = 1e-8,n = 1000) {
k <- numeric(n)
for (i in 1:n) {
dx <- genD(func = f, x = x0)$D[1]
x1 <- x0 - (f(x0) / dx)
k[i] <- x1
if (abs(x1-x0) < tol) {
root_approx <- x1
res <- list('Raíz Aproximada' = root_approx, 'Iteraciones' = k[1:i])
return(res)
}
x0 <- x1
}
print("Se alcanzó el número máximo de iteraciones")
}
funcion_anualidad <- function(i){
y = 12000 * (1 - (1 / (1 + i)^120)) - (100000 / (1 + i)^420) * (1 - (1 / (1 + i)^180))
return(y)
}
resultado <- newton_raphson(funcion_anualidad, x0 = 0.01)
tasa_mensual <- resultado[['Raíz Aproximada']]
cat("Raíz aproximada (tasa mensual): ", tasa_mensual)
## Raíz aproximada (tasa mensual): 0.00568165
Notemos que esto es una tasa efectiva mensual, y el problema nos pide una tasa convertible mensual. Para obtenerla, multiplicaremos la tasa por 12.
tasa_nominal_mensual <- tasa_mensual * 12
cat("La tasa convertible mensual es ", tasa_nominal_mensual)
## La tasa convertible mensual es 0.06817981
Por tanto, la tasa nominal es de 6.81% aproximadamente.