Sofi1606/Cashflow
0
1import streamlit as st2import numpy as np3import pandas as pd4import matplotlib.pyplot as plt5 6# Function to compute present value7def calculate_pv(cashflows, rate):8 pv = sum(cf / (1 + rate) ** i for i, cf in enumerate(cashflows))9 return pv10 11# Streamlit app layout (nombre)12st.title('Cashflow Calculadora de valor presente')13 14# Input for the discount rate15rate = st.number_input('Tasa de descuento (%)', min_value=0.0, max_value=100.0, value=15.0, step=0.1)/10016 17# Inputs for the number of years18n = st.number_input("Cuántos años", min_value = 0, step=1)19 20# Inputs for the cashflows21cf_list = [0] * (n+1)22cf_dict = pd.DataFrame({"cashflows": cf_list}).astype(int)23cf_df = st.data_editor(cf_dict.T)24 25cashflows = np.array(cf_df.values[0])26 27# Button to calculate PV28if st.button('Calcula el valor presente'):29 pv = calculate_pv(cashflows, rate)30 st.write(f'El valor presnte es: ${pv:,.2f}')31 32 # Prepare data for the plot33 colors = ['green' if cf > 0 else 'red' for cf in cashflows]34 plt.scatter(range(n+1), cashflows, c=colors)35 plt.title('Cashflow Diagrama')36 plt.xlabel('Periodo')37 plt.ylabel('Cashflow')38 for i, cf in enumerate(cashflows):39 plt.annotate(f'{cf:,.2f}', (i, cf), textcoords="offset points", xytext=(0,n), ha='center')40 st.pyplot(plt)41 42 