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!")