Amortización

Teoria

En matemáticas financieras, la amortization se refiere al proceso de extinguir gradualmente una deuda, mediante pagos periódicos, tanto del capital como de los intereses, hasta su liquidación total. Es un concepto fundamental en préstamos, hipotecas y cualquier tipo de financiamiento donde se devuelve un capital en cuotas. 

Conceptos clave:

  • Deuda: Cantidad de dinero que se debe a alguien o a una entidad. 

  • Pago periódico: Cada uno de los abonos que se realizan para reducir la deuda.

  • Intereses: Costo del préstamo, que se calcula sobre el saldo pendiente. 

  • Amortización (del capital): La parte del pago que reduce el monto principal de la deuda.

  • Saldo insoluto (o pendiente): La cantidad de deuda que aún no se ha pagado.


Tipos de sistemas de amortización:

  • Amortización gradual (o sistema francés):

    Las cuotas son constantes, pero la proporción de amortización del capital y los intereses varía a lo largo del tiempo.

  • Amortización constante (o sistema alemán):

    La amortización del capital es constante en cada período, mientras que los intereses varian.

Ejemplo de amortización (gradual)

TABLA DE AMORTIZACION DE CUOTA FIJA

Monto de prestamo 12000000
interes mensual 0.02
periodeo mensual 12
cuota fija 1134715.16

TABLA DE AMORTIZACIÓN

saldo inicial cuota fija interes abano capital saldo fina
0 12,000,000
1 12,000,000 $1,134,715.16 240000 $894,715.16 11,105285
2 11,105,285 $1,134,715.16 222105.69 $912,609.46 10,192675
3 10,192,675 $1,134,715.16 203853.50 $930,861.65 9,261814
4 9,261,814 $1,134,715.16 185236.27 $949,478.88 8,312335
5 8,312,335 $1,134,715.16 166246.69 $968,468.46 7,343866
6 7,343,866 $1,134,715.16 146877.32 $987,837.83 6,356029
7 6,356,029 $1,134,715.16 127120.57 $1,007,594.59 5,348434
9 5,348,434 $1,134,715.16 106968.67 $1,027,746.48 4,320687
10 4,320,687 $1,134,715.16 86413.74 $1,048,301.41 3,272386
11 3,272,386 $1,134,715.16 65447.72 $1,069,267.44 2,203119
12 2,203,119 $1,134,715.16 44062.37 $1,090,652.79 $112466
13 1,112,466 $1,134,715.16 22249.31 $1,112,465.84 0

Ejemplo 2

Datos: Monto del préstamo (P): $20,000

Tasa de interés anual (r): 24% (capitalizable mensualmente)

Tasa de interés mensual (i)24%/12=2%=0.02

Número de pagos (n): 6 (mensuales vencidos)

\[C=R\dfrac{1-(1+i/p)^{-np}}{i/p}\] \[20000=R\dfrac{1-(1+0.24/12)^{-6}}{0.24/12}\] \[20000=R(5.601430891)\] \[\dfrac{20000}{5.601430891}=R\] \[R= 3570.52\]

Ejemplo de amortización (gradual) en R tabla ejercico 1.

TABLA DE AMORTIZACION DE CUOTA FIJA

Monto de prestamo 12000000
interes mensual 0.02
periodeo mensual 12
cuota fija 1134715.16

library(FinancialMath)
amort.table(Loan = 12000000, n = 12, pmt = NA, i = .24, ic = 12, pf = 12,plot = FALSE)
$Schedule
   Year Payment Interest Paid Principal Paid  Balance
1  0.08 1134715     240000.00       894715.2 11105285
2  0.17 1134715     222105.70       912609.5 10192675
3  0.25 1134715     203853.51       930861.7  9261814
4  0.33 1134715     185236.27       949478.9  8312335
5  0.42 1134715     166246.70       968468.5  7343866
6  0.50 1134715     146877.33       987837.8  6356029
7  0.58 1134715     127120.57      1007594.6  5348434
8  0.67 1134715     106968.68      1027746.5  4320687
9  0.75 1134715      86413.75      1048301.4  3272386
10 0.83 1134715      65447.72      1069267.4  2203119
11 0.92 1134715      44062.37      1090652.8  1112466
12 1.00 1134715      22249.32      1112465.8        0

$Other
                    Details
Loan           1.200000e+07
Total Paid     1.361658e+07
Total Interest 1.616582e+06
Eff Rate       2.682418e-01
i^(12)         2.400000e-01

Ejemplo 2

Andrea pide un prestamo de 20000 que se van amortizar mediante, seis pagos mensuales vencidos si la tasa es del 24% capitalizable mensual,encontrar de cuanto es el abono mensual.

library(FinancialMath)
amort.table(Loan = 20000, n = 6, pmt = NA, i = 0.02, ic = 1, pf = 1,plot = FALSE)
$Schedule
  Payment Interest Paid Principal Paid  Balance
1 3570.52        400.00        3170.52 16829.48
2 3570.52        336.59        3233.93 13595.56
3 3570.52        271.91        3298.61 10296.95
4 3570.52        205.94        3364.58  6932.37
5 3570.52        138.65        3431.87  3500.51
6 3570.52         70.01        3500.51     0.00

$Other
                Details
Loan           20000.00
Total Paid     21423.10
Total Interest  1423.10
Eff Rate           0.02

Ejemplo 3

Préstamo con pagos mensuales Datos:

Monto del préstamo: $15,000

Tasa de interés anual: 18% (capitalizable mensualmente)

Plazo: 5 meses

Pagos: Mensuales vencidos

library(FinancialMath)
amort.table(Loan = 15000, n = 5, pmt = NA, i = .18, ic = 12, pf = 12,plot = FALSE)
$Schedule
  Year Payment Interest Paid Principal Paid  Balance
1 0.08 3136.34        225.00        2911.34 12088.66
2 0.17 3136.34        181.33        2955.01  9133.65
3 0.25 3136.34        137.00        2999.34  6134.32
4 0.33 3136.34         92.01        3044.33  3089.99
5 0.42 3136.34         46.35        3089.99     0.00

$Other
                    Details
Loan           1.500000e+04
Total Paid     1.568170e+04
Total Interest 6.817000e+02
Eff Rate       1.956182e-01
i^(12)         1.800000e-01

Ejemplo de amortización (gradual) en Python

Andrea pide un prestamo de 20000 que se van amortizar mediante, seis pagos mensuales vencidos si la tasa es del 24% capitalizable mensual,encontrar de cuanto es el abono mensual.

import numpy_financial as npf

cuota = npf.pmt(rate = 0.24 / 12, nper = 6, pv = -20000)

print(f"El pago mensual es de: ${cuota:2f}")
El pago mensual es de: $3570.516247

# Tabla de Amortización - Préstamo de Andrea (Python)
import pandas as pd

# Datos del préstamo
P, n, i = 20000, 6, 0.24/12  # Principal, períodos, tasa mensual

# Cálculo del pago mensual
PMT = P * (i * (1 + i)**n) / ((1 + i)**n - 1)
print(f"Abono mensual: ${PMT:.2f}\n")
Abono mensual: $3570.52
# Tabla de amortización
saldo = P
tabla = []

for periodo in range(1, n + 1):
    saldo_inicial = saldo
    interes = saldo * i
    amortizacion = PMT - interes
    saldo -= amortizacion
    
    tabla.append({
        'Periodo': periodo,
        'Saldo_Inicial': saldo_inicial,
        'Pago': PMT,
        'Interes': interes,
        'Amortizacion': amortizacion,
        'Saldo_Final': saldo
    })

# Crear DataFrame y mostrar resultados
df = pd.DataFrame(tabla)
print(df.round(2))
   Periodo  Saldo_Inicial     Pago  Interes  Amortizacion  Saldo_Final
0        1       20000.00  3570.52   400.00       3170.52     16829.48
1        2       16829.48  3570.52   336.59       3233.93     13595.56
2        3       13595.56  3570.52   271.91       3298.61     10296.95
3        4       10296.95  3570.52   205.94       3364.58      6932.37
4        5        6932.37  3570.52   138.65       3431.87      3500.51
5        6        3500.51  3570.52    70.01       3500.51         0.00
print(f"\nTotal pagado: ${PMT * n:.2f}")

Total pagado: $21423.10
print(f"Total intereses: ${df['Interes'].sum():.2f}")
Total intereses: $1423.10

Ejemplo

Préstamo con pagos mensuales Datos:

Monto del préstamo: $15,000

Tasa de interés anual: 18% (capitalizable mensualmente)

Plazo: 5 meses

Pagos: Mensuales vencidos

# Tabla de Amortización - Préstamo $15,000 (Python)
import pandas as pd

# Datos del préstamo
P, n, i = 15000, 5, 0.18/12  # Principal, períodos, tasa mensual

# Cálculo del pago mensual
PMT = P * (i * (1 + i)**n) / ((1 + i)**n - 1)
print(f"Abono mensual: ${PMT:.2f}\n")
Abono mensual: $3136.34
# Tabla de amortización
saldo = P
tabla = []

for periodo in range(1, n + 1):
    saldo_inicial = saldo
    interes = saldo * i
    amortizacion = PMT - interes
    saldo -= amortizacion
    
    tabla.append({
        'Periodo': periodo,
        'Saldo_Inicial': saldo_inicial,
        'Pago': PMT,
        'Interes': interes,
        'Amortizacion': amortizacion,
        'Saldo_Final': saldo
    })

# Crear DataFrame y mostrar resultados
df = pd.DataFrame(tabla)
print(df.round(2))
   Periodo  Saldo_Inicial     Pago  Interes  Amortizacion  Saldo_Final
0        1       15000.00  3136.34   225.00       2911.34     12088.66
1        2       12088.66  3136.34   181.33       2955.01      9133.65
2        3        9133.65  3136.34   137.00       2999.34      6134.32
3        4        6134.32  3136.34    92.01       3044.33      3089.99
4        5        3089.99  3136.34    46.35       3089.99        -0.00
print(f"\nTotal pagado: ${PMT * n:.2f}")

Total pagado: $15681.70
print(f"Total intereses: ${df['Interes'].sum():.2f}")
Total intereses: $681.70

Ejemplo

ENUNCIADO: Carlos desea comprar un automóvil y solicita un préstamo de $35,000 en el banco. El banco le ofrece las siguientes condiciones: - Monto del préstamo: $35,000 - Tasa de interés anual: 15% (capitalizable mensualmente) - Plazo: 8 meses - Pagos: Mensuales vencidos

Se requiere:

1. Calcular el pago mensual que debe realizar Carlos

2. Elaborar la tabla de amortización completa


import pandas as pd
# Datos del préstamo
P = 35000       # Principal
n = 8           # Número de pagos (meses)
tasa_anual = 0.15  # Tasa anual 15%
i = tasa_anual/12  # Tasa mensual


# Cálculo del pago mensual
PMT = P * (i * (1 + i)**n) / ((1 + i)**n - 1)

# Tabla de amortización
saldo = P
tabla = []

for periodo in range(1, n + 1):
    saldo_inicial = saldo
    interes = saldo * i
    amortizacion = PMT - interes
    saldo -= amortizacion
    
    tabla.append({
        'Periodo': periodo,
        'Saldo_Inicial': round(saldo_inicial, 2),
        'Pago': round(PMT, 2),
        'Interes': round(interes, 2),
        'Amortizacion': round(amortizacion, 2),
        'Saldo_Final': round(saldo, 2)
    })

# Crear DataFrame y mostrar resultados
df = pd.DataFrame(tabla)
print("TABLA DE AMORTIZACIÓN:")
TABLA DE AMORTIZACIÓN:
print("-" * 80)
--------------------------------------------------------------------------------
print(df.to_string(index=False))
 Periodo  Saldo_Inicial    Pago  Interes  Amortizacion  Saldo_Final
       1       35000.00 4624.66   437.50       4187.16     30812.84
       2       30812.84 4624.66   385.16       4239.50     26573.34
       3       26573.34 4624.66   332.17       4292.49     22280.85
       4       22280.85 4624.66   278.51       4346.15     17934.70
       5       17934.70 4624.66   224.18       4400.48     13534.22
       6       13534.22 4624.66   169.18       4455.48      9078.74
       7        9078.74 4624.66   113.48       4511.18      4567.57
       8        4567.57 4624.66    57.09       4567.57        -0.00

ejemplo

ENUNCIADO: La empresa “TecnoSoft” solicita un préstamo para expandir sus operaciones. Datos del préstamo: - Monto solicitado: $80,000 - Tasa de interés anual: 21% (capitalizable mensualmente) - Plazo: 12 meses - Sistema de amortización: Constante

Se requiere: 1. Calcular la cuota de amortización constante 2. Elaborar la tabla de amortización completa


import pandas as pd

# Datos del préstamo
P = 80000           # Principal
n = 12              # Número de pagos (meses)
tasa_anual = 0.21   # Tasa anual 21%
i = tasa_anual / 12 # Tasa mensual

# Cálculo de la amortización constante
amortizacion_constante = P / n
print(f"CUOTA DE AMORTIZACIÓN CONSTANTE: ${amortizacion_constante:.2f}")
CUOTA DE AMORTIZACIÓN CONSTANTE: $6666.67
print("=" * 50)
==================================================
# Tabla de amortización
saldo_inicial = P
tabla = []

for periodo in range(1, n + 1):
    interes = saldo_inicial * i
    amortizacion = amortizacion_constante
    pago_total = interes + amortizacion
    saldo_inicial -= amortizacion
    
    tabla.append({
        "Periodo": periodo,
        "Pago": round(pago_total, 2),
        "Interés": round(interes, 2),
        "Amortización": round(amortizacion, 2),
        "Saldo": round(saldo_inicial, 2)
    })

df = pd.DataFrame(tabla, columns=["Periodo", "Pago", "Interés", "Amortización", "Saldo"])

print("-" * 80)
--------------------------------------------------------------------------------
print(df.to_string(index=False))
 Periodo    Pago  Interés  Amortización    Saldo
       1 8066.67  1400.00       6666.67 73333.33
       2 7950.00  1283.33       6666.67 66666.67
       3 7833.33  1166.67       6666.67 60000.00
       4 7716.67  1050.00       6666.67 53333.33
       5 7600.00   933.33       6666.67 46666.67
       6 7483.33   816.67       6666.67 40000.00
       7 7366.67   700.00       6666.67 33333.33
       8 7250.00   583.33       6666.67 26666.67
       9 7133.33   466.67       6666.67 20000.00
      10 7016.67   350.00       6666.67 13333.33
      11 6900.00   233.33       6666.67  6666.67
      12 6783.33   116.67       6666.67    -0.00
library(FinancialMath)
amort.table(Loan = 80000, n = 12, pmt = NA, i = .21, ic = 12, pf = 12,plot = FALSE)
$Schedule
   Year Payment Interest Paid Principal Paid  Balance
1  0.08  7449.1       1400.00        6049.10 73950.90
2  0.17  7449.1       1294.14        6154.96 67795.94
3  0.25  7449.1       1186.43        6262.67 61533.26
4  0.33  7449.1       1076.83        6372.27 55160.99
5  0.42  7449.1        965.32        6483.78 48677.21
6  0.50  7449.1        851.85        6597.25 42079.96
7  0.58  7449.1        736.40        6712.70 35367.26
8  0.67  7449.1        618.93        6830.17 28537.08
9  0.75  7449.1        499.40        6949.70 21587.38
10 0.83  7449.1        377.78        7071.32 14516.06
11 0.92  7449.1        254.03        7195.07  7320.98
12 1.00  7449.1        128.12        7320.98     0.00

$Other
                    Details
Loan           8.000000e+04
Total Paid     8.938922e+04
Total Interest 9.389220e+03
Eff Rate       2.314393e-01
i^(12)         2.100000e-01

# Parámetros del préstamo
P <- 80000                 # Monto del préstamo
n <- 12                    # Plazo en meses
i <- 0.21 / 12             # Tasa de interés mensual (1.75%)

# Amortización constante
amortizacion <- P / n

# Inicializar vectores
meses <- 1:n
saldo_inicial <- numeric(n)
interes <- numeric(n)
cuota_total <- numeric(n)
saldo_final <- numeric(n)

# Calcular tabla
saldo_inicial[1] <- P
for (mes in 1:n) {
  if (mes > 1) saldo_inicial[mes] <- saldo_final[mes - 1]
  
  interes[mes] <- saldo_inicial[mes] * i
  cuota_total[mes] <- amortizacion + interes[mes]
  saldo_final[mes] <- saldo_inicial[mes] - amortizacion
}

# Crear tabla de amortización
tabla_amortizacion <- data.frame(
  Mes = meses,
  Saldo_Inicial = round(saldo_inicial, 2),
  Interes = round(interes, 2),
  Amortizacion = round(rep(amortizacion, n), 2),
  Cuota_Total = round(cuota_total, 2),
  Saldo_Final = round(saldo_final, 2)
)

# Mostrar tabla
print(tabla_amortizacion)
   Mes Saldo_Inicial Interes Amortizacion Cuota_Total Saldo_Final
1    1      80000.00 1400.00      6666.67     8066.67    73333.33
2    2      73333.33 1283.33      6666.67     7950.00    66666.67
3    3      66666.67 1166.67      6666.67     7833.33    60000.00
4    4      60000.00 1050.00      6666.67     7716.67    53333.33
5    5      53333.33  933.33      6666.67     7600.00    46666.67
6    6      46666.67  816.67      6666.67     7483.33    40000.00
7    7      40000.00  700.00      6666.67     7366.67    33333.33
8    8      33333.33  583.33      6666.67     7250.00    26666.67
9    9      26666.67  466.67      6666.67     7133.33    20000.00
10  10      20000.00  350.00      6666.67     7016.67    13333.33
11  11      13333.33  233.33      6666.67     6900.00     6666.67
12  12       6666.67  116.67      6666.67     6783.33        0.00
monto <- 80000                  # Monto del préstamo}
tasa_anual <- 0.21             # Tasa de interés anual
tasa_mensual <- tasa_anual / 12  # Tasa de interés mensual
n <- 12                        # Número de meses (plazo)

# Amortización constante mensual
amortizacion <- monto / n

# Inicialización de vectores
mes <- 1:n
saldo_inicial <- numeric(n)
interes <- numeric(n)
cuota <- numeric(n)
saldo_final <- numeric(n)

# Primer saldo
saldo_inicial[1] <- monto

# Cálculo de la tabla
for (i in 1:n) {
  if (i > 1) {
    saldo_inicial[i] <- saldo_final[i - 1]
  }
  interes[i] <- saldo_inicial[i] * tasa_mensual
  cuota[i] <- amortizacion + interes[i]
  saldo_final[i] <- saldo_inicial[i] - amortizacion
}

# Crear data frame
tabla <- data.frame(
  Mes = mes,
  Saldo_Inicial = round(saldo_inicial, 2),
  Interes = round(interes, 2),
  Amortizacion = round(rep(amortizacion, n), 2),
  Cuota_Total = round(cuota, 2),
  Saldo_Final = round(saldo_final, 2)
)

# Mostrar tabla
print(tabla)
   Mes Saldo_Inicial Interes Amortizacion Cuota_Total Saldo_Final
1    1      80000.00 1400.00      6666.67     8066.67    73333.33
2    2      73333.33 1283.33      6666.67     7950.00    66666.67
3    3      66666.67 1166.67      6666.67     7833.33    60000.00
4    4      60000.00 1050.00      6666.67     7716.67    53333.33
5    5      53333.33  933.33      6666.67     7600.00    46666.67
6    6      46666.67  816.67      6666.67     7483.33    40000.00
7    7      40000.00  700.00      6666.67     7366.67    33333.33
8    8      33333.33  583.33      6666.67     7250.00    26666.67
9    9      26666.67  466.67      6666.67     7133.33    20000.00
10  10      20000.00  350.00      6666.67     7016.67    13333.33
11  11      13333.33  233.33      6666.67     6900.00     6666.67
12  12       6666.67  116.67      6666.67     6783.33        0.00