martes, 6 de octubre de 2020

Construyendo una Tabla de Amortización de Préstamos 2.0 con Python - numpy-financial y tabulate

 Hola a todos, hoy vamos a construir una versión 2.0 de nuestra tabla de amortización de préstamos

Con la ayuda del paquete numpy y de matplotlib incluiremos en nuestro script un par de arrays para guardar los datos relacionados con la porción correspondiente a los pagos asociados al capital y otro para extraer la porción de los intereses.

Teniendo separada esta información, la utilizaremos como un argumento en matplotlib para realizar una gráfica de barras apiladas como la que se puede ver en este ejemplo:


El código fuente modificado, nos queda de la siguiente manera:

#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 = 1000000
tasa = 0.03
plazo = 36
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()
view raw tabla2.py hosted with ❤ by GitHub


La salida de esta nueva tabla de amortización nos va a mostrar la tabla que ya habíamos visto antes, un mensaje con el valor total del préstamo y del total de intereses a pagar y por último la gráfica de barras con la porción de capital e intereses. 

Las barras naranjas, conforman el pago de intereses en cada una de las cuotas, mientras las azules representa el abono a capital en cada periodo:



Hasta la próxima.

No hay comentarios.:

Publicar un comentario