demons1 / app.py
GALOLIT's picture
Update app.py
3a28ef3 verified
import streamlit as st
import numpy as np
import pandas as pd
def calculate_returns(y_initial, A, T, changes_in_interest_rate):
# Calcular el retorno para cada mes
z = np.arange(T+1)
r_c = np.zeros(T+1)
interest_rate = y_initial / (12 * 100)
interest_rates = [interest_rate] * (T+1)
for month in range(T+1):
for change_month, new_interest_rate in changes_in_interest_rate.items():
if month >= change_month:
interest_rate = new_interest_rate / (12 * 100)
interest_rates[month] = interest_rate
r_c[month] = A * np.exp(interest_rate * month)
return z, r_c, interest_rates
def main():
st.title('App de pruebas 🏦')
# Ingresar la tasa de interés nominal inicial
y_initial = st.number_input("Escribe la tasa de interés nominal inicial (%):")
# Ingresar la cantidad que se ahorrará
A = st.number_input("Escribe la cantidad que ahorrarás ($):")
# Ingresar el número total de meses
T = st.number_input("Escribe cuantos meses quieres ver:", min_value=1, step=1, format="%f")
# Establecer un valor predeterminado para change_month
change_month = st.number_input("Mes en el que cambia la tasa de interés (dejar en blanco si no hay cambios):", min_value=1, max_value=T, value=1, step=1)
# Crear un diccionario para almacenar los cambios en la tasa de interés
changes_in_interest_rate = {}
# Permitir al usuario ingresar cambios en la tasa de interés
if change_month != 1:
new_interest_rate = st.number_input(f"Nueva tasa de interés a partir del mes {change_month} (%):")
changes_in_interest_rate[change_month] = new_interest_rate
# Calcular los retornos y las tasas de interés correspondientes
z, r_c, interest_rates = calculate_returns(y_initial, A, T, changes_in_interest_rate)
# Crear un DataFrame con los resultados
new_dict = {"Mes": z, "Tasa de Interés (%)": interest_rates, "Retorno continuo": r_c}
df = pd.DataFrame(new_dict)
# Mostrar el DataFrame y el resultado final
st.dataframe(df)
st.write(f"En {T} meses tendrás $ {r_c[-1]}")
if __name__ == "__main__":
main()