diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/OpenSpaceProforma.py b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/OpenSpaceProforma.py
index 84de637..c99b1f8 100644
--- a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/OpenSpaceProforma.py
+++ b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/OpenSpaceProforma.py
@@ -1,85 +1,7 @@
import proforma.ProFormaForm as ProFormaForm
from statistics import mean
-myAMI_1P1 = {'Affordable 1': ['Studio', 0.04, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.14, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.12, 800, 1500],
- 'Market 1': ['Studio', 0.10, 400, 3200],
- 'Market 2': ['1-Bed', 0.32, 600, 4000],
- 'Market 3': ['2-Bed', 0.28, 800, 5700],
- }
-
-myProFormaP1 = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P1)
-myAMI_1P1rep = {'Affordable 1': ['Studio', 0.04, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.14, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.12, 800, 1500],
- 'Market 1': ['Studio', 0.10, 400, 3200],
- 'Market 2': ['1-Bed', 0.32, 600, 4000],
- 'Market 3': ['2-Bed', 0.28, 800, 5700],
- }
-
-myProFormaP1rep = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P1rep)
myAMI_1P2 = {'Affordable 1': ['Studio', 0.06, 400, 1150],
'Affordable 2': ['1-Bed', 0.18, 600, 1250],
@@ -92,17 +14,17 @@
myProFormaP2 = ProFormaForm.ProForma(verbose= False,
exportToExcel= False,
yrs = 3,
- start_year = 2034,
+ start_year = 2032,
lot_area= 839831,
- equity = 0.70,
+ equity = 0.75,
net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
+ landscape_gross_sqft= 47000,
existingBuildingFloorArea=0,
existingBuildingPurchase=0,
residential_gross_sqft= 188000,
commercial_gross_sqft= 49210,
manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
+ community_gross_sqft= 24335,
avgUnitSize_residential= 600,
avgUnitSize_commercial= 2000,
avgUnitSize_manufacturing=0,
@@ -115,208 +37,9 @@
manufacturing_rent=0,
community_cost= 275,
community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
+ hard_cost= 206,
+ soft_cost= 88,
land_cost=1,
- landscape_cost=0,
+ landscape_cost= 50,
residential_AMI=myAMI_1P2)
-myAMI_1P2rep = {'Affordable 1': ['Studio', 0.04, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.14, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.12, 800, 1500],
- 'Market 1': ['Studio', 0.10, 400, 3200],
- 'Market 2': ['1-Bed', 0.32, 600, 4000],
- 'Market 3': ['2-Bed', 0.28, 800, 5700],
- }
-
-myProFormaP2rep = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P2rep)
-
-myAMI_1P3 = {'Affordable 1': ['Studio', 0.08, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.28, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.24, 800, 1500],
- 'Market 1': ['Studio', 0.06, 400, 3200],
- 'Market 2': ['1-Bed', 0.18, 600, 4000],
- 'Market 3': ['2-Bed', 0.16, 800, 5700],
- }
-
-myProFormaP3 = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P3)
-
-myAMI_1P3rep = {'Affordable 1': ['Studio', 0.04, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.14, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.12, 800, 1500],
- 'Market 1': ['Studio', 0.10, 400, 3200],
- 'Market 2': ['1-Bed', 0.32, 600, 4000],
- 'Market 3': ['2-Bed', 0.28, 800, 5700],
- }
-
-myProFormaP3rep = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P3rep)
-
-myAMI_1P4 = {'Affordable 1': ['Studio', 0.10, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.32, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.28, 800, 1500],
- 'Market 1': ['Studio', 0.04, 400, 3200],
- 'Market 2': ['1-Bed', 0.14, 600, 4000],
- 'Market 3': ['2-Bed', 0.12, 800, 5700],
- }
-
-myProFormaP4 = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P4)
-
-myAMI_1P4rep = {'Affordable 1': ['Studio', 0.04, 400, 1150],
- 'Affordable 2': ['1-Bed', 0.14, 600, 1250],
- 'Affordable 3': ['2-Bed', 0.12, 800, 1500],
- 'Market 1': ['Studio', 0.10, 400, 3200],
- 'Market 2': ['1-Bed', 0.32, 600, 4000],
- 'Market 3': ['2-Bed', 0.28, 800, 5700],
- }
-
-myProFormaP4rep = ProFormaForm.ProForma(verbose= False,
- exportToExcel= False,
- yrs = 7,
- start_year = 2025,
- lot_area= 839831,
- equity = 0.70,
- net_loss_factor= 0.15,
- landscape_gross_sqft= 0,
- existingBuildingFloorArea=0,
- existingBuildingPurchase=0,
- residential_gross_sqft= 400700,
- commercial_gross_sqft= 76944,
- manufacturing_gross_sqft=0,
- community_gross_sqft= 8100,
- avgUnitSize_residential= 600,
- avgUnitSize_commercial= 2000,
- avgUnitSize_manufacturing=0,
- avgUnitSize_community= 1500,
- residential_cost= 375,
- residential_rent= 2800,
- commercial_cost= 275,
- commercial_rent= 120000,
- manufacturing_cost=0,
- manufacturing_rent=0,
- community_cost= 275,
- community_rent= 60000,
- hard_cost=250,
- soft_cost=107,
- land_cost=1,
- landscape_cost=0,
- residential_AMI=myAMI_1P4rep)
\ No newline at end of file
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructure.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructure.cpython-310.pyc
index 54d3583..84ec119 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructure.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructure.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructureHelper.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructureHelper.cpython-310.pyc
index 77924bb..92b72f0 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructureHelper.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CapitalStructureHelper.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CostHelper.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CostHelper.cpython-310.pyc
index 69e751a..8732e17 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CostHelper.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/CostHelper.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Costs.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Costs.cpython-310.pyc
index 367466e..7440dc0 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Costs.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Costs.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Inputs.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Inputs.cpython-310.pyc
index 5bdceea..d3ff8f7 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Inputs.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Inputs.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/InputsAssumptions.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/InputsAssumptions.cpython-310.pyc
index 4c9098d..b88934c 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/InputsAssumptions.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/InputsAssumptions.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/OtherRates.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/OtherRates.cpython-310.pyc
index a7658ea..330ebd5 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/OtherRates.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/OtherRates.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Proceeds.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Proceeds.cpython-310.pyc
index fe09ee0..11e62ac 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Proceeds.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Proceeds.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/ProceedsHelper.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/ProceedsHelper.cpython-310.pyc
index 06ed305..1e6cc7f 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/ProceedsHelper.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/ProceedsHelper.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Totals.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Totals.cpython-310.pyc
index 460d51b..53e9dbd 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Totals.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Inputs/__pycache__/Totals.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/Results.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/Results.cpython-310.pyc
index 7e204b0..2569e77 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/Results.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/Results.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsHelper.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsHelper.cpython-310.pyc
index 1ff2751..cfe0f32 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsHelper.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsHelper.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsMetricHelper.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsMetricHelper.cpython-310.pyc
index 82e1769..7b16576 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsMetricHelper.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Results/__pycache__/ResultsMetricHelper.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Schedule/__pycache__/ScheduleDataFrame.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Schedule/__pycache__/ScheduleDataFrame.cpython-310.pyc
index b778332..4cdbd9c 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Schedule/__pycache__/ScheduleDataFrame.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/Schedule/__pycache__/ScheduleDataFrame.cpython-310.pyc differ
diff --git a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/__pycache__/ProFormaForm.cpython-310.pyc b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/__pycache__/ProFormaForm.cpython-310.pyc
index 226f5c5..d485554 100644
Binary files a/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/__pycache__/ProFormaForm.cpython-310.pyc and b/Spring/Coffee and Code/Workshops/PyCharm/ProForma/proforma/__pycache__/ProFormaForm.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/.idea/.gitignore b/Spring/Teams/Towers in the Soup/ProForma/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Spring/Teams/Towers in the Soup/ProForma/.idea/ProForma.iml b/Spring/Teams/Towers in the Soup/ProForma/.idea/ProForma.iml
new file mode 100644
index 0000000..74d515a
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/.idea/ProForma.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/.idea/inspectionProfiles/profiles_settings.xml b/Spring/Teams/Towers in the Soup/ProForma/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/.idea/misc.xml b/Spring/Teams/Towers in the Soup/ProForma/.idea/misc.xml
new file mode 100644
index 0000000..a4652f3
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/.idea/modules.xml b/Spring/Teams/Towers in the Soup/ProForma/.idea/modules.xml
new file mode 100644
index 0000000..cb032cd
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/.idea/vcs.xml b/Spring/Teams/Towers in the Soup/ProForma/.idea/vcs.xml
new file mode 100644
index 0000000..4fce1d8
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/BuildUp_ProForma.py b/Spring/Teams/Towers in the Soup/ProForma/BuildUp_ProForma.py
new file mode 100644
index 0000000..1fcfaa3
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/BuildUp_ProForma.py
@@ -0,0 +1 @@
+''' test '''
diff --git a/Spring/Teams/Towers in the Soup/ProForma/DevCosts_CapitalStruc.py b/Spring/Teams/Towers in the Soup/ProForma/DevCosts_CapitalStruc.py
new file mode 100644
index 0000000..c7410f6
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/DevCosts_CapitalStruc.py
@@ -0,0 +1,172 @@
+import DevelopmentCostsInputs as devCost
+
+#0.StartingAssumptions#
+
+def TotalGrossZoningFloorArea(residZFA, comZFA, manZFA):
+ totalGZFA = [residZFA,comZFA,manZFA]
+ sumGZFA = sum(totalGZFA)
+##for i in totalGZFA- how would we be able to it that way but print what each one is only one time##
+ print("ResidentialZoningFloorArea")
+ print(residZFA)
+ print("CommercialZoningFloorArea")
+ print(comZFA)
+ print("ManufacturingZoningFloorArea")
+ print(manZFA)
+ return sumGZFA
+
+def InacuracyFloorLoss(myTotalGZFA, InacFact):
+ floorLoss = myTotalGZFA * InacFact
+ print("InaccuracyFactor")
+ print(InacFact)
+ return floorLoss
+
+def TotalZoningFloorArea(myTotalGZFA, LossFact):
+ totalZFA = myTotalGZFA - (myTotalGZFA * LossFact)
+ print("NetLossFactor")
+ print(LossFact)
+ return totalZFA
+
+myTotalGZFA = TotalGrossZoningFloorArea(residZFA= devCost.ResidentialZoningFloorArea,
+ comZFA= devCost.CommercialZoningFloorArea,
+ manZFA= devCost.ManufacturingZoningFloorArea)
+print("InitialTotalGrossZoningFloorArea")
+print(myTotalGZFA)
+
+myFloorLoss = InacuracyFloorLoss(myTotalGZFA= myTotalGZFA,
+ InacFact= devCost.InacuracyFactor)
+print("Inacuracy+/-FloorLoss")
+print(myFloorLoss)
+
+myTotalZFA = TotalZoningFloorArea(myTotalGZFA= myTotalGZFA,
+ LossFact= devCost.NetLossFactor)
+print("FinalTotalZoningFloorArea")
+print(myTotalZFA)
+
+#A.DevelopmentCosts#
+
+def LandPurchaseCost(landCost, lotArea):
+ totalPurchCost = landCost * lotArea
+ print("LandCost")
+ print(landCost)
+ print("LotArea")
+ print(lotArea)
+ return totalPurchCost
+
+def ResidentialCost(residZFA, residCost):
+ totalResidCost = residZFA * residCost
+ print("ResidentialCostpsf")
+ print(residCost)
+ return totalResidCost
+
+def CommercialCost(comZFA, comCost):
+ totalComCost = comZFA * comCost
+ print("CommercialCostpsf")
+ print(comCost)
+ return totalComCost
+
+def ManufacturingCost(manZFA, manCost):
+ totalManCost = manZFA * manCost
+ print("ManufacturingCostpsf")
+ print(manCost)
+ return totalManCost
+
+def HardCost(myTotalGZFA, hardCost):
+ totalHardCost = myTotalGZFA * hardCost
+ print("HardCostpsf")
+ print(hardCost)
+ return totalHardCost
+
+def SoftCost(myTotalGZFA, softCost):
+ totalSoftCost = myTotalGZFA * softCost
+ print("SoftCostpsf")
+ print(softCost)
+ return totalSoftCost
+
+def TotalDevelopmentCost(BuildPurch, mytotalPurchCost, mytotalResidCost, mytotalComCost, mytotalManCost, mytotalHardCost, mytotalSoftCost):
+ totalDevCost = [BuildPurch, mytotalPurchCost, mytotalResidCost, mytotalComCost, mytotalManCost, mytotalHardCost, mytotalSoftCost]
+ sumDevCost: int = sum(totalDevCost)
+ print("ExistingBuildingPurchase")
+ print(BuildPurch)
+ return sumDevCost
+
+mytotalPurchCost = LandPurchaseCost(landCost= devCost.LandCostpsf,
+ lotArea= devCost.LotArea)
+print("TotalLandPurchaseCost")
+print(mytotalPurchCost)
+
+mytotalResidCost = ResidentialCost(residZFA= devCost.ResidentialZoningFloorArea,
+ residCost= devCost.ResidentialCostpsf)
+print("TotalResidentialCost")
+print(mytotalResidCost)
+
+mytotalComCost = CommercialCost(comZFA= devCost.CommercialZoningFloorArea,
+ comCost= devCost.CommercialCostpsf)
+print("TotalCommercialCost")
+print(mytotalComCost)
+
+mytotalManCost = ManufacturingCost(manZFA= devCost.ManufacturingZoningFloorArea,
+ manCost= devCost.ManufacturingCostpsf)
+print("TotalManufacturingCost")
+print(mytotalManCost)
+
+mytotalHardCost = HardCost(myTotalGZFA= myTotalGZFA,
+ hardCost= devCost.HardCostpsf)
+print("TotalHardCost")
+print(mytotalHardCost)
+
+mytotalSoftCost = SoftCost(myTotalGZFA= myTotalGZFA,
+ softCost= devCost.SoftCostpsf)
+print("TotalSoftCost")
+print(mytotalSoftCost)
+
+myTotalDevCost = TotalDevelopmentCost(BuildPurch= devCost.ExistingBuildingPurchase,
+ mytotalPurchCost= mytotalPurchCost,
+ mytotalResidCost= mytotalResidCost,
+ mytotalComCost= mytotalComCost,
+ mytotalManCost= mytotalManCost,
+ mytotalHardCost= mytotalHardCost,
+ mytotalSoftCost= mytotalSoftCost)
+print("TotalDevelopmentCost")
+print(myTotalDevCost)
+
+#B.CapitalStructure#
+
+def Equity(myTotalDevCost, EqPerc):
+ totalEq = myTotalDevCost * EqPerc
+ print("EquityPercentage")
+ print(EqPerc)
+ return totalEq
+
+def Debt(myTotalDevCost, mytotalEq):
+ totalDebt = myTotalDevCost - mytotalEq
+ return totalDebt
+
+def DebtService(mytotalDebt, DebtServPerc):
+ totalDebtServ = mytotalDebt * DebtServPerc
+ print("DebtServicePercentage")
+ print(DebtServPerc)
+ return totalDebtServ
+
+mytotalEq = Equity(myTotalDevCost= myTotalDevCost,
+ EqPerc= devCost.EquityPercentage)
+print("TotalEquity")
+print(mytotalEq)
+
+mytotalDebt = Debt(myTotalDevCost= myTotalDevCost,
+ mytotalEq= mytotalEq)
+print("TotalDebt")
+print(mytotalDebt)
+
+mytotalDebtServ = DebtService(mytotalDebt= mytotalDebt,
+ DebtServPerc= devCost.DebtServicePercentage)
+print("TotalDebtServicingCost")
+print(mytotalDebtServ)
+
+#C.ProjectedResidentialProceeds#
+
+#ResidentialExpenses#
+
+#Depreciation#
+
+
+
diff --git a/Spring/Teams/Towers in the Soup/ProForma/DevelopmentCostsInputs.py b/Spring/Teams/Towers in the Soup/ProForma/DevelopmentCostsInputs.py
new file mode 100644
index 0000000..440ffc2
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/DevelopmentCostsInputs.py
@@ -0,0 +1,41 @@
+#0.StartingAssumptions#
+DevelopmentTimeline = 11
+LotArea = 10375
+ExistingBuildingFloorArea = 132420.00 ##instead of hard coding can input from Built Area from Profile Information. whose code would that be?##
+ResidentialFAR = 7.52
+CommercialFAR = 1.00
+ManufacturingFAR = 0.00
+ResidentialZoningFloorArea = 100000.00
+CommercialZoningFloorArea = 100000.00
+ManufacturingZoningFloorArea = 100000.00
+InacuracyFactor = 0.03
+NetLossFactor = 0.15
+
+#A.DevelopmentCosts#
+ResidentialCostpsf = 500.00
+CommercialCostpsf = 500.00
+ManufacturingCostpsf = 500.00
+HardCostpsf = 200.00
+SoftCostpsf = 200.00
+LandCostpsf = 50
+ExistingBuildingPurchase = 0
+
+#B.CapitalStructure#
+DebtPercentage = 0.65
+EquityPercentage = 0.35
+DebtServicePercentage = 0.0688
+
+#C.ProjectedResidentialProceeds#
+AverageMarketRateUnitSizepsf = 900.00
+MarketRateRentpyr = 12000.00
+ResidentialVacancyRate = 0.05
+IncomeExpenseEscalation = 0.02
+
+#ResidentialExpenses#
+OperationalExpensespsf = 6.50
+RealEstateTaxespsf = 2.50
+ReplacementReservepsf = 1.00
+
+#Depreciation#
+ResidentailDepreciationinyrs = 27.5
+
diff --git a/Spring/Teams/Towers in the Soup/ProForma/Manufacturing_Constants.py b/Spring/Teams/Towers in the Soup/ProForma/Manufacturing_Constants.py
new file mode 100644
index 0000000..752f422
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/Manufacturing_Constants.py
@@ -0,0 +1,9 @@
+#Manufacturing Constants
+
+marketRateRent = 12000
+manufacturingVacancyRate = .05
+manufacturingIncome = 100000
+operationalExpensesPerSqft = 3
+realEstateTaxesPerSqft = 1
+replacementReservesPerSqft = .50
+manufacturingDepreciationInYears = 39
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/OtherRates.py b/Spring/Teams/Towers in the Soup/ProForma/OtherRates.py
new file mode 100644
index 0000000..0255598
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/OtherRates.py
@@ -0,0 +1,30 @@
+"""Attributes"""
+
+'''Import from Legacies py file'''
+import DevCosts_CapitalStruc
+DC = DevCosts_CapitalStruc
+
+annualIncreaseInExpenses = .02
+annualPublicSubsidiesIncrease = .02
+capRateAtSale = .06
+salesExpense = .05
+ordinaryIncomeTax = .35
+depreciationRecapture = .25
+capitalGainsTax = .2
+discountRate = 0
+interestRate = .05
+
+
+loanAmount = DC.myTotalDevCost #TODO: import from Car legacies -> DC.totalDevelopmentCost?
+
+debtService = DC.mytotalDebtServ #TODO: import from Car legacies -> CS.debtService?
+
+def constantLoanRate(loanAmount, debtService):
+ return debtService / loanAmount
+constantRate = constantLoanRate(loanAmount, debtService)
+print(constantRate)
+
+
+'''print(constantLoanRate())'''
+print(loanAmount)
+print(debtService)
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/ProForma_ProfileInformation.py b/Spring/Teams/Towers in the Soup/ProForma/ProForma_ProfileInformation.py
new file mode 100644
index 0000000..c9be1bc
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/ProForma_ProfileInformation.py
@@ -0,0 +1,17 @@
+ProfileInformation = {
+ Date=
+ Team=
+ Portfolio=
+ Lot Area=
+ Lot Depth=
+ Land Use=
+ Easements=
+ BBL=
+ BIN=
+ Zoning District=
+ BuiltFAR=
+ ExistingBuildings=
+ YearBuilt=
+ BuiltArea=
+ BuildingUse=
+}
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/ProForma_ROI.py b/Spring/Teams/Towers in the Soup/ProForma/ProForma_ROI.py
new file mode 100644
index 0000000..1a0f7b9
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/ProForma_ROI.py
@@ -0,0 +1,98 @@
+# Global Constants
+constructionCostPerSqFt = 362
+studioSqFt = 400
+oneBedroomSqFt = 575
+twoBedroomSqFt = 775
+threeBedroomSqFt = 950
+numberStudios = 20
+numberOneBedrooms = 20
+numberTwoBedrooms = 40
+numberThreeBedrooms = 20
+affordableRentPerSqft = 1
+marketRentPerSqft = 3
+i = .03
+n = 1
+
+def userInput():
+ userInput = input("What percentage of housing would you like to be affordable? ")
+ try:
+ userInputNumber = int(userInput)
+ if 0 < userInputNumber < 101:
+ return tidsProforma(userInputNumber)
+ elif userInputNumber > 100:
+ print("You can't have more than 100% of anything. Who taught you math?")
+ elif userInputNumber == 0:
+ print("Why did you enter zero? Do you hate poor people?")
+ elif userInputNumber < 0:
+ print("You entered a negative number. That's not possible.")
+ except ValueError:
+ print("You didn't put and integer... Stop Trying to break my program!")
+
+def tidsProforma(userInputNumberAffordable):
+ print("Towers In The Soup")
+ print("Pro Forma")
+
+ percentAffordable = userInputNumberAffordable
+ percentMarketRate = 100 - percentAffordable
+
+ development_totalSqFt = totalSqft()
+ affordable_totalSqFt = totalAffordableSqft(development_totalSqFt, percentAffordable)
+ market_totalSqFt = totalMarketSqft(development_totalSqFt, percentMarketRate)
+ construction_expenses = totalConstructionExpense(development_totalSqFt, constructionCostPerSqFt)
+ affordable_rent = affordableRent(affordable_totalSqFt, affordableRentPerSqft)
+ market_rent = marketRent(market_totalSqFt, marketRentPerSqft)
+ total_rent_income = totalRentalIncome(affordable_rent, market_rent)
+ payment_output = annualFinancingPayment(construction_expenses, i, n)
+ profitability_output = profitability(total_rent_income, payment_output)
+
+ print("######"*10)
+ print("Amount of percent affordable: " + str(percentAffordable) + "%")
+ print("Amount of market rate: {0}%".format(percentMarketRate))
+ print("Amount of affordable -> {0}% | Amount of market rate -> {1}%".format(percentAffordable, percentMarketRate))
+ print(development_totalSqFt)
+ print("######" * 10)
+ print("The profitability output of your development is: {0}".format(profitability_output))
+ print("annual payments are: {0}" .format(payment_output))
+ print(total_rent_income * 12)
+
+def totalSqft():
+ #Python Collection
+ #{} or [] or ()
+ return (studioSqFt * numberStudios) + (oneBedroomSqFt * numberOneBedrooms) + (twoBedroomSqFt * numberTwoBedrooms) + (threeBedroomSqFt * numberThreeBedrooms)
+
+
+def numberOfUnits():
+ return numberStudios + numberOneBedrooms + numberTwoBedrooms + numberThreeBedrooms
+
+
+def totalAffordableSqft(total_sqft,percentAffordable):
+ return total_sqft * percentAffordable/100
+
+
+def totalMarketSqft(total_sqft,percentMarketRate):
+ return total_sqft * percentMarketRate/100
+
+
+def totalConstructionExpense(total_sqft, constructionCostPerSqFt):
+ return total_sqft * constructionCostPerSqFt
+
+
+def annualFinancingPayment(construction_expenses, i, n):
+ return construction_expenses/(1 + pow((1 + i), -n) / i)
+ #annual financing payment for loan + principle
+
+
+def affordableRent(affordable_sqft, affordableRentPerSqft):
+ return affordable_sqft * affordableRentPerSqft
+
+
+def marketRent(market_sqft, marketRentPerSqft):
+ return market_sqft * marketRentPerSqft
+
+
+def totalRentalIncome(affordable_rent, market_rent):
+ return affordable_rent + market_rent
+
+
+def profitability(total_rental_income, payment_output):
+ return (total_rental_income * 12) - payment_output
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/Proceeds_Constants.py b/Spring/Teams/Towers in the Soup/ProForma/Proceeds_Constants.py
new file mode 100644
index 0000000..66a6486
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/Proceeds_Constants.py
@@ -0,0 +1,31 @@
+#Proceeds_Constants
+
+'''Residential Constants'''
+res_avgMarketRateUnitSize = 900
+res_marketRateRent = 12000
+res_vacancyRate = .05
+res_approxunits = 94
+res_incomeExpenseEscalation = .02
+res_operationalExpenses = 6.50
+res_realEstateTaxes = 2.50
+res_replacementReserve = 1.00
+res_depreciation = -1545455
+
+'''Commercial Constants'''
+com_marketRateRent = 12000
+com_vacancyRate = .10
+com_operationalExpenses = 6.50
+com_realEstateTaxes = 2.50
+com_replacementReserve = 1.00
+com_depreciation = -1089744
+
+'''Manufacturing Constants'''
+
+manu_marketRateRent = 12000
+manu_vacancyRate = .05
+manu_income = 100000
+manu_operationalExpenses = 3
+manu_realEstateTaxes = 1
+manu_replacementReserves = .50
+manu_Depreciation = 39
+
diff --git a/Spring/Teams/Towers in the Soup/ProForma/Projected_Proceeds.py b/Spring/Teams/Towers in the Soup/ProForma/Projected_Proceeds.py
new file mode 100644
index 0000000..093c937
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/Projected_Proceeds.py
@@ -0,0 +1,119 @@
+
+import Starting_Assumptions as SA
+import Proceeds_Constants as PC
+
+
+def common_area_and_circulation (zoningFloorArea, netLossFactor):
+ return zoningFloorArea * netLossFactor
+
+resCommonAreaCirculation = common_area_and_circulation(SA.residentialZoningFloorArea, SA.netLossFactor)
+comCommonAreaCirculation = common_area_and_circulation(SA.commercialZoningFloorArea, SA.netLossFactor)
+manuCommonAreaCirculation = common_area_and_circulation(SA.manufacturingZoningFloorArea, SA.netLossFactor)
+
+print(resCommonAreaCirculation)
+print(comCommonAreaCirculation)
+print(manuCommonAreaCirculation)
+
+
+def net_area (zoningFloorArea, common_area_and_circulation):
+ return zoningFloorArea - common_area_and_circulation
+
+resNetArea = net_area(SA.residentialZoningFloorArea, resCommonAreaCirculation)
+comNetArea = net_area(SA.residentialZoningFloorArea, comCommonAreaCirculation)
+manuNetArea = net_area(SA.residentialZoningFloorArea, manuCommonAreaCirculation)
+
+print(resNetArea)
+print(comNetArea)
+print(manuNetArea)
+
+
+def approximate_units (resNetArea, avgmarketRateUnitSize):
+ return resNetArea / avgmarketRateUnitSize
+
+print(approximate_units)
+
+
+def total_income (approxUnits, marketRateRent):
+ return approxUnits * marketRateRent
+
+resTotalIncome = total_income(PC.res_approxunits, PC.res_marketRateRent)
+comTotalIncome = total_income(comNetArea, PC.com_marketRateRent)
+
+manuTotalIncome = SA.manufacturingZoningFloorArea
+
+
+print(resTotalIncome)
+print(comTotalIncome)
+print(manuTotalIncome)
+
+
+def total_vacancy (vacancyRate, total_income):
+ return vacancyRate * total_income
+
+resTotalVacancy = total_vacancy(PC.res_vacancyRate, resTotalIncome)
+comTotalVacancy = total_vacancy(PC.com_vacancyRate, comTotalIncome)
+manuTotalVacancy = total_vacancy(PC.manu_vacancyRate, manuTotalIncome)
+
+print(resTotalVacancy)
+print(comTotalVacancy)
+print(manuTotalVacancy)
+
+
+def operational_expenses (operationalExpenses, net_area):
+ return operationalExpenses * net_area
+
+resOperationalExpenses = operational_expenses(PC.res_operationalExpenses, resNetArea)
+comOperationalExpenses = operational_expenses(PC.com_operationalExpenses, comNetArea)
+manuOperationalExpenses = operational_expenses(PC.manu_operationalExpenses, manuNetArea)
+
+print(resOperationalExpenses)
+print(comOperationalExpenses)
+print(manuOperationalExpenses)
+
+
+def real_estate_taxes (realestateTaxes, net_area):
+ return realestateTaxes * net_area
+
+resRealEstateTaxes = real_estate_taxes(PC.res_realEstateTaxes, resNetArea)
+comRealEstateTaxes = real_estate_taxes(PC.com_realEstateTaxes, comNetArea)
+manuRealEstateTaxes = real_estate_taxes(PC.manu_realEstateTaxes, manuNetArea)
+
+print(resRealEstateTaxes)
+print(comRealEstateTaxes)
+print(manuRealEstateTaxes)
+
+
+def replacement_reserve (zoningFloorArea, replacementReserve):
+ return zoningFloorArea * replacementReserve
+
+resReplacementReserve = replacement_reserve(SA.residentialZoningFloorArea, PC.res_replacementReserve)
+comReplacementReserve = replacement_reserve(SA.commercialZoningFloorArea, PC.com_replacementReserve)
+manuReplacementReserve = replacement_reserve(SA.manufacturingZoningFloorArea, PC.manu_replacementReserves)
+
+print(resReplacementReserve)
+print(comReplacementReserve)
+print(manuReplacementReserve)
+
+
+def total_cost (net_area, devCost):
+ return (net_area * devCost)
+
+resTotalCost = replacement_reserve(resNetArea, SA.resDevCost)
+comTotalCost = replacement_reserve(comNetArea, SA.comDevCost)
+manuTotalCost = replacement_reserve(manuNetArea, SA.ManuDevCost)
+
+print (resTotalCost)
+print(comTotalCost)
+print(manuTotalCost)
+
+
+def depreciation (total_cost, depreciation):
+ return (-1 * (total_cost / depreciation))
+
+resDepreciation = replacement_reserve(resTotalCost, PC.res_depreciation)
+comDepreciation = replacement_reserve(comTotalCost, PC.com_depreciation)
+manuDepreciation = replacement_reserve(manuTotalCost, PC.manu_Depreciation)
+
+print(resDepreciation)
+print(comDepreciation)
+print(manuDepreciation)
\ No newline at end of file
diff --git a/Spring/Teams/Towers in the Soup/ProForma/Starting_Assumptions.py b/Spring/Teams/Towers in the Soup/ProForma/Starting_Assumptions.py
new file mode 100644
index 0000000..ec61c7e
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/Starting_Assumptions.py
@@ -0,0 +1,21 @@
+#Starting Assumptions Constants
+
+devTimeline = 11
+lotArea = 10375
+existingBuildingFloorArea = 0
+residentialFAR = 7.52
+commercialFAR = 1.00
+manufacturingFAR = 1.00
+residentialZoningFloorArea = 100000
+commercialZoningFloorArea = 100000
+manufacturingZoningFloorArea = 100000
+airRightsSqft = 0
+innacuracyFactor = .03
+inaccuracyFloorLoss = 9000
+netLossFactor = .15
+
+
+#Development Costs
+resDevCost = 500
+comDevCost = 500
+ManuDevCost = 500
diff --git a/Spring/Teams/Towers in the Soup/ProForma/__pycache__/DevCosts_CapitalStruc.cpython-310.pyc b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/DevCosts_CapitalStruc.cpython-310.pyc
new file mode 100644
index 0000000..210177a
Binary files /dev/null and b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/DevCosts_CapitalStruc.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/__pycache__/DevelopmentCostsInputs.cpython-310.pyc b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/DevelopmentCostsInputs.cpython-310.pyc
new file mode 100644
index 0000000..a0bdbb3
Binary files /dev/null and b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/DevelopmentCostsInputs.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Manufacturing_Constants.cpython-310.pyc b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Manufacturing_Constants.cpython-310.pyc
new file mode 100644
index 0000000..20883a5
Binary files /dev/null and b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Manufacturing_Constants.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/__pycache__/ProForma_ROI.cpython-310.pyc b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/ProForma_ROI.cpython-310.pyc
new file mode 100644
index 0000000..8b0bcb1
Binary files /dev/null and b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/ProForma_ROI.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Proceeds_Constants.cpython-310.pyc b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Proceeds_Constants.cpython-310.pyc
new file mode 100644
index 0000000..70790fc
Binary files /dev/null and b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Proceeds_Constants.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Starting_Assumptions.cpython-310.pyc b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Starting_Assumptions.cpython-310.pyc
new file mode 100644
index 0000000..fd9494c
Binary files /dev/null and b/Spring/Teams/Towers in the Soup/ProForma/__pycache__/Starting_Assumptions.cpython-310.pyc differ
diff --git a/Spring/Teams/Towers in the Soup/ProForma/main.py b/Spring/Teams/Towers in the Soup/ProForma/main.py
new file mode 100644
index 0000000..25dac2b
--- /dev/null
+++ b/Spring/Teams/Towers in the Soup/ProForma/main.py
@@ -0,0 +1,9 @@
+import Projected_Proceeds
+import Proceeds_Constants
+import Starting_Assumptions
+import DevelopmentCostsInputs
+import DevelopmentCostsInputs
+
+if __name__ == "__main__":
+
+