Sofi1606's picture
Update app.py
8cf4a5a verified
raw
history blame contribute delete
No virus
1.38 kB
#Importamos las librerías
import streamlit as st
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Titulo de la app
st.title("Pagando mi seguro con ahorros 💼")
# Crear los diferntes inputs (Ahorro, tasa, tiempo)
Ahorro = st.number_input("Cuánto quieres ahorrar al mes?")
tasa = st.number_input("Cual es la tasa?")
tiempo = int(st.number_input("Por cuántos meses quieres ahorrar?", step = 1))
# Crear las operaciones a realizar
Pn_d = (Ahorro * 12 / tasa) * (1 - (1 / (1 + tasa/12)**tiempo))
# Pn_c = (Ahorro / (np.exp(tasa/12) - 1)) * (1 - np.exp(- tasa * tiempo / 12))
# Que se impriman los valores
st.write(f"El valor de P es {Pn_d:,.2f} con el modelo discreto")
# st.write(f"The value of P is {Pn_c:,.2f} with continuous model")
# Draw the plot
cf_list = [-Pn_d] + [Ahorro] * tiempo
cf_dict = pd.DataFrame({"cashflows": cf_list}).astype(float)
cf_df = st.dataframe(cf_dict.T)
# Gráficamos
colors = ["seagreen" if cf > 0 else "orchid" for cf in cf_dict.cashflows]
plt.scatter(range(tiempo + 1), cf_dict.cashflows, c=colors)
plt.title("Diagrama del flujo de dinero")
plt.xlabel("Periodo")
plt.ylabel("flujo de dinero")
for i, cf in enumerate(cf_dict.cashflows):
plt.annotate(
f"{cf:,.2f}",
(i, cf),
textcoords="offset points",
xytext=(0, tiempo),
ha="center",
)
st.pyplot(plt)