miércoles, 16 de marzo de 2022

Financial Modeling - Ejercicio 2 Capítulo 1, Tabla Amortización Préstamo - Simon Benninga

Hola a todos, hoy vamos a continuar con los ejercicios del libro: Financial Modeling de Simon Benninga, hoy vamos a trabajar el ejercicio 2 del capítulo 1 que dice así:

2. You just took a $10,000, 5-year loan. Payments at the end of each year are flat (equal in every year) at an interest rate of 15%. Calculate the appropriate loan table, showing the breakdown in each year between principal and interest.

Traducción:

2. Usted toma un préstamo a 5 años. Se amortiza con pagos iguales al final de cada año con una tasa de interés del 15%. Calcule la tabla del préstamo, separando para cada año los abonos a capital e intereses.


Este ejercicio lo vamos a resolver construyendo el siguiente modelo financiero en Excel:


En el modelo, para cada año podemos identificar claramente los abonos a capital en (columna B), los intereses que se pagan en cada periodo (columna C), el valor de la cuota fija mensual (columna D) y el saldo a capital después de pagar la cuota de cada año. Entre las columnas H y K, se encuentra la formulación del modelo.

Para llegar al mismo resultado en Python, vamos a utilizar un script que hicimos en un ejercicio anterior, solo vamos a cambiar los parámetros de entrada del modelo y lo vamos a ejecutar:


Después de actualizar las variables capital, tasa y plazo y ejecutar el script, tenemos:


Como pueden ver, hemos llegado al mismo resultado.

A continuación el código fuente:

 

#Calculando una tabla de amortización de un préstamo
import numpy_financial as npf
import numpy as np
import tabulate as tab
import matplotlib.pyplot as plt
capital = 10000
tasa = 0.15
plazo = 5
cuota = round(npf.pmt(tasa, plazo, -capital, 0), 0)
datos = []
datos_num = []
saldo = capital
tot_int = 0
for i in range(1, plazo+1):
pago_capital = npf.ppmt(tasa, i, plazo, -capital, 0)
pago_int = cuota - pago_capital
tot_int += pago_int
saldo -= pago_capital
linea = [i, format(cuota, '0,.0f'), format(pago_capital, '0,.0f'), format(pago_int, '0,.0f'), format(saldo, '0,.0f')]
datos.append(linea)
linea_num = [i, cuota, pago_capital, pago_int, saldo]
datos_num.append(linea_num)
print(tab.tabulate(datos, headers=['Periodo', 'Cuota', 'Capital', 'Intereses', 'saldo'], tablefmt='psql'))
print('Valor del préstamo:', format(capital, '0,.0f'))
print('Total intereses a pagar:', format(tot_int, '0,.0f'))
print('\n')
datos_num = np.array(datos_num)
s_cap = datos_num[:,2]
s_int = datos_num[:,3]
s_per = datos_num[:,0]
fig, ax = plt.subplots()
ax.bar(s_per, s_cap, label='capital')
ax.bar(s_per, s_int, label='intereses', bottom=s_cap)
ax.set_title('Composicion Cuotas Periodicas')
ax.legend(loc=4)
plt.show()

No hay comentarios.:

Publicar un comentario