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:
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