4  Amortizacion de Credito

Author

Brayan Cubides

4.1 1. Crédito a corto plazo: Cuota fija, pagos vencidos

Para calcular la cuota fija (R) se usan las siguientes constantes:

  • Tasa efectiva mensual: \[ i_{(12)}=\frac{i^{(12)}}{12} = (1 + i)^{1/12} - 1 \]
  • Factor de anualidad mensual: \[ 12 \, a_{\overline{n}|} = \frac{1 - \bigl(1 + i_{(12)}\bigr)^{-12n}}{i_{(12)}} \]
  • Cuota fija: \[ R = \frac{VP}{12 \, a_{\overline{n}|}} \]
AmortizacionCortaPlazoFijo <- function(n, i, VP) {
  # n   : plazo en años
  # i   : tasa efectiva anual
  # VP  : valor presente del crédito
  
  i12_12 <- (1 + i)^(1/12) - 1 
  m <- n * 12 # número de pagos m
  
  a_mensual <- (1 - (1 + i12_12)^(-m)) / i12_12
  
  # cuota fija R
  R <- VP / a_mensual
  
  # inicializar 
  Mes        <- 1:m
  Cuota      <- rep(R, m)
  Intereses  <- numeric(m)
  Abono      <- numeric(m)
  Saldo      <- numeric(m + 1)
  Saldo[1]   <- VP
  
  # amortización
  for (k in 1:m) {
    Intereses[k] <- i12_12 * Saldo[k]
    Abono[k]     <- Cuota[k] - Intereses[k]
    Saldo[k + 1] <- Saldo[k] - Abono[k]
  }
  
  
  tabla <- data.frame(
    Mes               = Mes,
    Cuota             = round(Cuota,     2),
    Intereses         = round(Intereses, 2),
    AbonoACapital     = round(Abono,      2),
    SaldoRestante     = round(Saldo[-1],  2) # (quitamos el primer saldo de la columna original)
  )
  
  return(tabla)
}

# Ejemplo:
tabla_ejemplo <- AmortizacionCortaPlazoFijo(n = 3, i = 0.14, VP = 45000000)
head(tabla_ejemplo, 5)
  Mes   Cuota Intereses AbonoACapital SaldoRestante
1   1 1520016  494048.3       1025967      43974033
2   2 1520016  482784.4       1037231      42936802
3   3 1520016  471396.8       1048619      41888183
4   4 1520016  459884.2       1060131      40828052
5   5 1520016  448245.1       1071770      39756281
tail(tabla_ejemplo, 5)
   Mes   Cuota Intereses AbonoACapital SaldoRestante
32  32 1520016  80760.78       1439255       5916777
33  33 1520016  64959.42       1455056       4461721
34  34 1520016  48984.57       1471031       2990690
35  35 1520016  32834.34       1487181       1503509
36  36 1520016  16506.80       1503509             0

4.2 2. Crédito a corto plazo: Cuota decreciente, pagos vencidos

  • Abono a capital mensual constante:

    \[ i_{(12)}=\frac{i^{(12)}}{12} = (1 + i)^{1/12} - 1 \] \[ \text{AbonoCapital}_i = \frac{VP}{12*n} \]

  • Intereses cada mes: \[ \text{Intereses}_i = i_{(12)} \times \text{Saldo}_{i-1} \]

  • Cuota mensual variable: \[ \text{Cuota}_i = \text{AbonoCapital}_i + \text{Intereses}_i \]

AmortizacionCuotaDecreciente <- function(n, i, VP) {
  # n   : plazo en años
  # i   : tasa efectiva anual
  # VP  : valor presente del crédito
  
  i12_12 <- (1 + i)^(1/12) - 1
  m <- n * 12 # número total de pagos m
  
  abono_capital <- VP / m # Abono Fijo
  
  # inicializar
  Mes           <- 1:m
  Cuota         <- numeric(m)
  Intereses     <- numeric(m)
  AbonoACapital <- rep(abono_capital, m)
  Saldo         <- numeric(m + 1)
  Saldo[1]      <- VP
  
  # amortización
  for (k in 1:m) {
    Intereses[k] <- i12_12 * Saldo[k]
    Cuota[k]     <- AbonoACapital[k] + Intereses[k]
    Saldo[k + 1] <- Saldo[k] - AbonoACapital[k]
  }
  
  tabla <- data.frame(
    Mes               = Mes,
    Cuota             = round(Cuota,         2),
    Intereses         = round(Intereses,     2),
    AbonoACapital     = round(AbonoACapital, 2),
    SaldoRestante     = round(Saldo[-1],      2)
  )
  
  return(tabla)
}

# Ejemplo:
tabla_decreciente <- AmortizacionCuotaDecreciente(n = 3, i = 0.14, VP = 45000000)
head(tabla_decreciente,5)
  Mes   Cuota Intereses AbonoACapital SaldoRestante
1   1 1744048  494048.3       1250000      43750000
2   2 1730325  480324.8       1250000      42500000
3   3 1716601  466601.2       1250000      41250000
4   4 1702878  452877.6       1250000      40000000
5   5 1689154  439154.1       1250000      38750000
tail(tabla_decreciente,5)
   Mes   Cuota Intereses AbonoACapital SaldoRestante
32  32 1318618  68617.82       1250000       5000000
33  33 1304894  54894.26       1250000       3750000
34  34 1291171  41170.69       1250000       2500000
35  35 1277447  27447.13       1250000       1250000
36  36 1263724  13723.56       1250000             0

4.3 3. Largo plazo en pesos con inflación, pagos vencidos

Entradas: tasa real (e), inflación anual (r), años (n), (VP).

Constantes:

  • Tasa anual con inflación: \[ i = (1+e)(1+r) - 1 \]
  • Tasa mensual efectiva con inflación: \[ i_{(12)} = \frac{i^{(12)}}{12} = (1 + i)^{1/12} - 1 \]
  • Tasa nominal anual: \[ i^{(12)}= 12[(1 + i)^{1/12} - 1] \]
  • Tasa mensual real: \[ e_{(12)} =\frac{e^{(12)}}{12} = (1+e)^{1/12} - 1,\quad e^{(12)}= 12[(1 + e)^{1/12} - 1] \]
  • Valor presente anualidad ajustada: \[ VPa = \frac{i}{i^{(12)}}\cdot \frac{1}{1 + r}\cdot \frac{1 - (1+e)^{-n}}{e} \cdot 12 \]
  • Cuota inicial: \[ R_0 = \frac{VP}{VPa} \]

Cada 12 meses la cuota se ajusta por inflación multiplicando por (1+r).

AmortizacionLargoPlazoInflacion <- function(n, e, r, VP) {
  # n   : plazo en años
  # e   : tasa real efectiva anual
  # r   : inflación anual
  # VP  : valor presente del préstamo
  
  # tasa anual con inflación
  i     <- (1 + e)*(1 + r) - 1
  
  # tasas
  i_12_12   <- (1 + i)^(1/12) - 1       # tasa mensual efectiva con inflación
  e_12_12   <- (1 + e)^(1/12) - 1       # tasa mensual real
  i_12 <- 12 * i_12_12                 # tasa nominal anual
  e_12_12 <- 12 * e_12_12                 # tasa nominal real
  
  # factor de anualidad real ajustada por inflación
  VPa <- (i / i_12) * (1/(1 + r)) * (1 - (1 + e)^(-n)) / e * 12
  
  # cuota inicial (mensual)
  R0 <- VP / VPa
  
  # Inicializar valores
  m   <- n * 12
  Mes <- 1:m
  Cuota         <- numeric(m)
  Intereses     <- numeric(m)
  AbonoACapital <- numeric(m)
  Saldo         <- numeric(m + 1)
  Saldo[1]      <- VP
  
  # ciclo mes a mes, actualizando la cuota cada año
  R <- R0
  for (k in 1:m) {
    # cada vez que empieza un nuevo año (mes 1,13,25,...), se ajusta la cuota
    if (k > 1 && (k - 1) %% 12 == 0) {
      R <- R * (1 + r)
    }
    Cuota[k]         <- R
    Intereses[k]     <- i_12_12 * Saldo[k]
    AbonoACapital[k] <- R - Intereses[k]
    Saldo[k + 1]     <- Saldo[k] - AbonoACapital[k]
  }
  
  data.frame(
    Mes               = Mes,
    Cuota             = round(Cuota,         2),
    Intereses         = round(Intereses,     2),
    AbonoACapital     = round(AbonoACapital, 2),
    SaldoRestante     = round(Saldo[-1],      2)
  )
}

# Ejemplo:
tabla_largo_plazo <- AmortizacionLargoPlazoInflacion(n = 15, e = 0.09, r = 0.05, VP = 300000000)
head(tabla_largo_plazo, 5)
  Mes   Cuota Intereses AbonoACapital SaldoRestante
1   1 3058893   3393243     -334350.1     300334350
2   2 3058893   3397025     -338131.8     300672482
3   3 3058893   3400850     -341956.4     301014438
4   4 3058893   3404717     -345824.2     301360262
5   5 3058893   3408629     -349735.7     301709998
tail(tabla_largo_plazo, 5)
    Mes   Cuota Intereses AbonoACapital SaldoRestante
176 176 6056399 331191.52       5725208      23555764
177 177 6056399 266434.79       5789964      17765800
178 178 6056399 200945.59       5855454      11910346
179 179 6056399 134715.67       5921683       5988663
180 180 6056399  67736.63       5988663             0

4.4 4. Crédito en UVR: cuota fija en UVR, pagos vencidos

Entradas: (e, r, n, VP_, UVR).

Constantes:

  • (VP_{UVR} = )
  • Tasa mensual real: \[ e_{(12)} =\frac{e^{(12)}}{12} = (1+e)^{1/12} - 1,\quad e^{(12)}= 12[(1 + e)^{1/12} - 1] \]
  • Anualidad mensual en UVR: \[ 12\,a_{\overline{n}|} = \frac{1 - (1+e)^{-n}}{e_{(12)}} \]
  • Cuota fija en UVR: \[ R_{UVR} = \frac{VP_{UVR}}{12\,a_{\overline{n}|}} \]

Intereses mensuales: (e_{(12)}) saldo en UVR.

AmortizacionUVR <- function(n, e, r, VP_pesos, UVR_valor) {
  # n         : plazo en años
  # e         : tasa real efectiva anual
  # r         : inflación anual
  # VP_pesos  : monto del préstamo en pesos
  # UVR_valor : valor de la UVR
  
  # convertir VP a UVR
  VP_uvr <- VP_pesos / UVR_valor
  
  # tasa mensual real
  e_12_12 <- (1 + e)^(1/12) - 1
  
  # factor de anualidad mensual en UVR:
  a_n_12 <- (1 - (1 + e)^(-n)) / e_12_12
  
  # cuota fija en UVR
  R_uvr <- VP_uvr / a_n_12
  
  # inicializar
  m   <- n * 12
  Mes <- 1:m
  Cuota_uvr     <- rep(R_uvr, m)
  Intereses_uvr <- numeric(m)
  Abono_uvr     <- numeric(m)
  Saldo_uvr     <- numeric(m + 1)
  Saldo_uvr[1]  <- VP_uvr
  
  # amortización
  for (k in 1:m) {
    Intereses_uvr[k] <- e_12_12 * Saldo_uvr[k]
    Abono_uvr[k]     <- Cuota_uvr[k] - Intereses_uvr[k]
    Saldo_uvr[k + 1] <- Saldo_uvr[k] - Abono_uvr[k]
  }
  
  data.frame(
    Mes                = Mes,
    Cuota_UVR          = round(Cuota_uvr,     0),
    Intereses_UVR      = round(Intereses_uvr, 0),
    AbonoCapital_UVR   = round(Abono_uvr,     0),
    SaldoRestante_UVR  = round(Saldo_uvr[-1], 0)
  )
}

# Ejemplo:
tabla_uvr <- AmortizacionUVR(n = 15, e = 0.09, r = 0.05, VP_pesos = 300000000, UVR_valor = 322.34)
head(tabla_uvr, 5)
  Mes Cuota_UVR Intereses_UVR AbonoCapital_UVR SaldoRestante_UVR
1   1      9246          6708             2538            928156
2   2      9246          6690             2557            925599
3   3      9246          6671             2575            923024
4   4      9246          6653             2594            920430
5   5      9246          6634             2612            917818
tail(tabla_uvr, 5)
    Mes Cuota_UVR Intereses_UVR AbonoCapital_UVR SaldoRestante_UVR
176 176      9246           326             8920             36328
177 177      9246           262             8984             27344
178 178      9246           197             9049             18295
179 179      9246           132             9114              9180
180 180      9246            66             9180                 0