Perpetuidades / app.py
azarazua's picture
Create app.py
fa63f53 verified
import streamlit as st
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Streamlit app layout
st.title("Insurance Payment with Savings 💼")
# Create the inputs (A, r, n)
monthly_payment = st.number_input("Desired monthly payment:")
interest_rate = st.number_input("Interest rate (%):")
months = int(st.number_input("Number of months:", step=1))
# Calculate the present value
present_value = (monthly_payment * 12 / interest_rate) * (1 - (1 / (1 + interest_rate/12)**months))
# Display the present value
st.write(f"The present value is {present_value:,.2f} using the discrete model")
# Cashflow DataFrame
cashflows = [-present_value] + [monthly_payment] * months
cf_df = pd.DataFrame({"cashflows": cashflows}).astype(float)
st.dataframe(cf_df.T)
# Plot the Cashflow Diagram
colors = ["green" if cf > 0 else "red" for cf in cf_df.cashflows]
plt.scatter(range(months + 1), cf_df.cashflows, c=colors)
plt.title("Cashflow Diagram")
plt.xlabel("Period")
plt.ylabel("Cashflow")
for i, cf in enumerate(cf_df.cashflows):
plt.annotate(f"{cf:,.2f}", (i, cf), textcoords="offset points", xytext=(0, months), ha="center")
st.pyplot(plt)