RBP-Calculator / app.py
zainulabedin949's picture
Update app.py
622a3fa verified
import streamlit as st
import numpy as np
# Function to calculate renting cost
def calculate_renting_cost(rent, annual_increase, years):
total_rent = 0
for year in range(years):
total_rent += rent * 12
rent += rent * (annual_increase / 100)
return total_rent
# Function to calculate buying cost
def calculate_buying_cost(property_price, down_payment_percentage, mortgage_rate, loan_years, tax, maintenance):
down_payment = property_price * (down_payment_percentage / 100)
loan_amount = property_price - down_payment
monthly_interest_rate = mortgage_rate / 100 / 12
months = loan_years * 12
# Monthly mortgage payment formula
monthly_payment = (loan_amount * monthly_interest_rate) / (1 - (1 + monthly_interest_rate) ** -months)
total_mortgage_cost = monthly_payment * months
# Additional costs
total_tax = tax * loan_years
total_maintenance = maintenance * loan_years
return total_mortgage_cost + total_tax + total_maintenance
# Streamlit app
st.title("Rent vs. Buy Calculator")
st.write("Compare the cost of renting vs. buying a property to make an informed decision.")
# User inputs
st.header("Renting Details")
rent = st.number_input("Monthly Rent ($)", value=1500.0, step=100.0)
annual_increase = st.number_input("Annual Rent Increase (%)", value=3.0, step=0.1)
years_renting = st.number_input("Number of Years Renting", value=5, step=1, min_value=1)
st.header("Buying Details")
property_price = st.number_input("Property Price ($)", value=300000.0, step=5000.0)
down_payment_percentage = st.number_input("Down Payment (%)", value=20.0, step=1.0)
mortgage_rate = st.number_input("Mortgage Interest Rate (%)", value=5.0, step=0.1)
loan_years = st.number_input("Loan Tenure (Years)", value=30, step=1, min_value=1)
tax = st.number_input("Annual Property Tax ($)", value=3000.0, step=100.0)
maintenance = st.number_input("Annual Maintenance Costs ($)", value=2000.0, step=100.0)
# Calculate costs
if st.button("Calculate"):
renting_cost = calculate_renting_cost(rent, annual_increase, years_renting)
buying_cost = calculate_buying_cost(property_price, down_payment_percentage, mortgage_rate, loan_years, tax, maintenance)
st.header("Results")
st.write(f"**Total Renting Cost:** ${renting_cost:,.2f}")
st.write(f"**Total Buying Cost (including taxes and maintenance):** ${buying_cost:,.2f}")
if buying_cost < renting_cost:
st.success("Buying is more cost-effective than renting based on the inputs provided.")
else:
st.warning("Renting is more cost-effective than buying based on the inputs provided.")
# Add footer
st.write("\n---")
st.write("App created by Mr.ZAIN!")