——————————————

PRESENTACIÓN SOBRE AMORTIZACIONES EN R

——————————————

Configuración inicial

options(scipen = 999) # Desactivar notación científica library(ggplot2) library(knitr) library(scales)

1. Definición de Amortización

cat(“¿Qué es una amortización?”) cat(“————————”) cat(“Proceso financiero para cancelar una deuda gradualmente con pagos periódicos.”)

cat(“Tipos principales:”) cat(“- Amortización gradual: Pagos iguales (interés disminuye, abono a capital aumenta)”) cat(“- Amortización constante: Abono a capital fijo (pagos decrecientes)”)

2. Función para generar tablas de amortización

generar_tabla_amortizacion <- function(monto, tasa, periodos, tipo = “gradual”) { if (tipo == “gradual”) { pago <- monto * tasa / (1 - (1 + tasa)^-periodos) saldo <- monto tabla <- data.frame( Periodo = integer(), Pago = numeric(), Interes = numeric(), Capital = numeric(), Saldo = numeric() )

for (i in 1:periodos) {
  interes <- saldo * tasa
  capital <- pago - interes
  saldo <- saldo - capital
  
  if (i == periodos) {  # Ajuste por decimales
    saldo <- 0
    capital <- pago - interes
  }
  
  tabla <- rbind(tabla, data.frame(
    Periodo = i,
    Pago = round(pago, 2),
    Interes = round(interes, 2),
    Capital = round(capital, 2),
    Saldo = round(saldo, 2)
  ))
}
return(tabla)

} else { # Amortización constante capital <- monto / periodos saldo <- monto tabla <- data.frame( Periodo = integer(), Pago = numeric(), Interes = numeric(), Capital = numeric(), Saldo = numeric() )

for (i in 1:periodos) {
  interes <- saldo * tasa
  pago <- capital + interes
  saldo <- saldo - capital
  
  tabla <- rbind(tabla, data.frame(
    Periodo = i,
    Pago = round(pago, 2),
    Interes = round(interes, 2),
    Capital = round(capital, 2),
    Saldo = round(saldo, 2)
  ))
}
return(tabla)

} }

3. Ejemplo 1: Depósitos para alcanzar un monto futuro

cat(“ - Depósitos para obtener $750,000”) cat(“—————————————–”)

tasa_trimestral <- 0.15/4 monto_deseado <- 750000 deposito <- 25000

Cálculo del número de periodos

n_periodos <- log(1 + (monto_deseado * tasa_trimestral / deposito)) / log(1 + tasa_trimestral) cat(sprintf(“Se necesitan aproximadamente %d depósitos trimestrales.”, ceiling(n_periodos)))

4. Ejemplo 2: Cancelación de deuda

cat(“ - Cancelar deuda de $690,000”) cat(“————————————-”)

tasa_mensual <- 0.18/12 deuda <- 690000 pago_mensual <- 120000

Cálculo del número de pagos

n_pagos <- -log(1 - (deuda * tasa_mensual / pago_mensual)) / log(1 + tasa_mensual) cat(sprintf(“Se necesitan aproximadamente %d pagos mensuales.”, ceiling(n_pagos)))

5. Ejemplo 3: Compra de automóvil

cat(“ - Financiamiento de automóvil”) cat(“————————————–”)

precio_auto <- 100000 enganche <- precio_auto * 0.3 financiamiento <- precio_auto - enganche tasa_mensual_efectiva <- 0.15/12 # Asumiendo que es nominal anual periodos <- 7

pago_mensual <- financiamiento * tasa_mensual_efectiva / (1 - (1 + tasa_mensual_efectiva)^-periodos) cat(sprintf(“Pago mensual aproximado: $%s”, comma(round(pago_mensual, 2))))

Generar tabla de amortización para el auto

tabla_auto <- generar_tabla_amortizacion(financiamiento, tasa_mensual_efectiva, periodos) print(kable(tabla_auto, align = ‘c’))

6. Ejemplo 4: Crédito empresarial

cat(“ - Crédito empresarial”) cat(“——————————”)

credito <- 15000 tasa_trimestral <- 0.11 trimestres <- 8

pago_trimestral <- credito * tasa_trimestral / (1 - (1 + tasa_trimestral)^-trimestres) cat(sprintf(“Pago trimestral aproximado: $%s”, comma(round(pago_trimestral, 2))))

Generar tabla de amortización para el crédito

tabla_credito <- generar_tabla_amortizacion(credito, tasa_trimestral, trimestres) print(kable(tabla_credito, align = ‘c’))

7. Visualización de amortización

grafico_amortizacion <- function(tabla, titulo) { tabla_larga <- reshape2::melt(tabla[, c(“Periodo”, “Interes”, “Capital”)], id.vars = “Periodo”)

ggplot(tabla_larga, aes(x = Periodo, y = value, fill = variable)) + geom_bar(stat = “identity”) + labs(title = titulo, x = “Periodo”, y = “Monto”, fill = “Componente”) + scale_fill_manual(values = c(“Interes” = “#FF6B6B”, “Capital” = “#4ECDC4”)) + theme_minimal() + scale_y_continuous(labels = dollar) }

Gráfico para el crédito empresarial

print(grafico_amortizacion(tabla_credito, “Composición de Pagos - Crédito Empresarial”))

8. Comparación VP vs VF

cat(“entre Valor Presente y Valor Futuro”) cat(“——————————————–”)

Ejemplo con $10,000 a 5 años al 10% anual

vp <- 10000 tasa <- 0.10 n <- 5

Valor Futuro

vf <- vp * (1 + tasa)^n intereses_vf <- vf - vp

Valor Presente (amortización)

pago_anual <- vp * tasa / (1 - (1 + tasa)^-n) intereses_vp <- n * pago_anual - vp

cat(sprintf(“Valor Presente ($10,000): Intereses totales = $%s”, comma(round(intereses_vp, 2)))) cat(sprintf(“Valor Futuro ($10,000): Intereses totales = $%s”, comma(round(intereses_vf, 2))))