Spaces:
Sleeping
Sleeping
File size: 3,682 Bytes
1d1cba0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
import requests
from requests import get
from bs4 import BeautifulSoup
import pandas
import itertools
import streamlit as st
def net_operating(rent, tax_rate, price):
#Takes input as monthly mortgage amount and monthly rental amount
#Uses managment expense, amount for repairs, vacancy ratio
#Example input: net_operating(1000,1,400,200)
#879.33
#1000 - 16.67 (tax) - 100 (managment) - 4 (repairs)
mortgage_amt = mortgage_monthly(price,20,3)
prop_managment = rent * 0.10
prop_tax = (price * (tax_rate/100)/12)
prop_repairs = (price * 0.02)/12
vacancy = (rent*0.02)
#These sections are a list of all the expenses used and formulas for each
net_income = rent - prop_managment - prop_tax - prop_repairs - vacancy - mortgage_amt
#Summing up expenses
output = [prop_managment, prop_tax, prop_repairs, vacancy, net_income]
return output
def down_payment(price,percent):
#This function takes the price and the downpayment rate and returns the downpayment amount
#Ie down_payment(100,20) returns 20
amt_down = price*(percent/100)
return(amt_down)
def mortgage_monthly(price,years,percent):
#This implements an approach to finding a monthly mortgage amount from the purchase price,
#years and percent.
#Sample input: (300000,20,4) = 2422
#
percent = percent /100
down = down_payment(price,20)
loan = price - down
months = years*12
interest_monthly = percent/12
interest_plus = interest_monthly + 1
exponent = (interest_plus)**(-1*months)
subtract = 1 - exponent
division = interest_monthly / subtract
payment = division * loan
return(payment)
#to do
def price_mine(pid):
#Currently this function takes an input of a URL and returns the listing prices
#The site it mines is remax
#The input must be a string input, we can reformat the input to force this to work
#Next we use regex to remove space and commas and dollar signs
#need to get from a product id to a price
prices = 0
prices = float(prices)
return prices
def cap_rate(monthly_income, price):
#This function takes net income, and price and calculates the cap rate
#
cap_rate = ((monthly_income*12) / price)*100
return cap_rate
def cash_on_cash(monthly_income, down_payment):
cash_return = ((monthly_income*12)/down_payment)*100
return cash_return
# trial = input("Enter a URL to a Remax listing: ")
# rent_amt = input("Enter the monthly rent price: ")
# property_tax = input("Enter the tax rate: ")
#We have to change these generic inputs to streamlit inputs
rent_amt = st.sidebar.text_input("Enter the monthly rent price: ")
property_tax = st.sidebar.text_input("Enter the tax rate: ")
rent_amt = float(rent_amt)
property_tax = float(property_tax)
listing_notice = price_mine(1)
mortgage = mortgage_monthly(listing_notice, 20, 3)
cash = down_payment(listing_notice, 20)
net_income = net_operating(rent_amt, property_tax , listing_notice)
monthly_cash = net_income[4]
cap_return = cap_rate(monthly_cash,listing_notice)
cash_percent = cash_on_cash(monthly_cash,cash)
# net_operating(rent, tax_rate, mortgage_amt, price):
# print("INPUT: ")
# print("The price of: ", listing_notice)
# print("The monthly rent of : ", rent_amt)
# print("The tax rate of : ", property_tax)
# print("OUTPUTS: ")
# print("Monthly mortgage of : ",mortgage)
# print("Net operating income: ", net_income)
# print("Cap rate of: ", cap_return," % ")
# print("Cash return rate of: ", cash_percent, " % ")
#We have to convert the above outputs to streamlit outputs
|