HugoHE's picture
Create app.py
f49ff9c verified
import gradio as gr
import pandas as pd
import plotly.graph_objects as go
def compute_return(month_deposit, initial_deposit, interest_rate, years):
total = initial_deposit
actual = initial_deposit
total_values = []
actual_values = []
for i in range(years):
for j in range(12):
total += month_deposit
actual += month_deposit
total = total * (interest_rate/100 + 1)
total_values.append(total)
actual_values.append(actual)
df = pd.DataFrame([[round(total,2), actual, round((total - actual)/actual*100, 2)]], columns=["Total asset", "Actual Investment", "Percentage Return"])
# add a line plot for total asset with years
years_range = list(range(1, years+1))
fig = go.Figure()
fig.add_trace(go.Scatter(x=years_range, y=total_values, mode='lines', name='Total'))
fig.add_trace(go.Scatter(x=years_range, y=actual_values, mode='lines', name='Actual'))
fig.update_layout(title='Evolution of Actual investment and Total asset with Years', xaxis_title='Years', yaxis_title='Amount')
return df, fig
inputs = [
gr.Slider(minimum=0, maximum=2000, step=100, value=500, label="Monthly Deposit"),
gr.Slider(minimum=0, maximum=20000, step=1000, value=500, label="Initial Deposit"),
gr.Slider(minimum=0, maximum=10, step=0.5, value=1, label="Monthly Return Rate"),
gr.Slider(minimum=0, maximum=10, step=1, value=1, label="Years")
]
output = [gr.DataFrame(label="Summary"),
gr.Plot()]
gr.Interface(fn=compute_return, inputs=inputs, outputs=output).launch()