public static void Main()
var editable = new PropertyNumbers();
editable.MortgageRate = (decimal)3.4;
editable.ExpensesFee = 12;
editable.ExpensesOther = 10;
editable.DepositRate = 25;
Console.WriteLine("Final Cashflow, After Refinance");
Console.WriteLine("---------------");
decimal DepositPrice = editable.Duv * editable.DepositRate / 100;
editable.MortgageAfter = editable.Duv - DepositPrice;
editable.MortgagePa = editable.MortgageAfter * editable.MortgageRate / 100;
editable.MortgagePcm = editable.MortgagePa / 12;
editable.RentalPcm = editable.AstPcm * editable.Ast;
decimal ExpensesFeeAmount = editable.RentalPcm * editable.ExpensesFee / 100;
decimal ExpensesOtherAmount = editable.RentalPcm * editable.ExpensesOther / 100;
editable.Cashflow = editable.RentalPcm - ExpensesFeeAmount - ExpensesOtherAmount - editable.MortgagePcm;
editable.StressMortgage = (editable.MortgageAfter * (editable.StressRate/100)) / 12;
editable.StressCashflow = editable.RentalPcm - ExpensesFeeAmount - ExpensesOtherAmount - editable.StressMortgage;
Console.WriteLine("Deposit Price = " + DepositPrice);
Console.WriteLine("Mortgage After =" + editable.MortgageAfter);
Console.WriteLine("MortgagePa = " + editable.MortgagePa);
Console.WriteLine("Mortgage Pcm =" + editable.MortgagePcm);
Console.WriteLine("Rental Pcm = " + editable.RentalPcm);
Console.WriteLine("Expenses Fee £ = " + ExpensesFeeAmount);
Console.WriteLine("Expenses Other £ = " + ExpensesOtherAmount);
Console.WriteLine("Cashflow = " + editable.Cashflow);
Console.WriteLine("Stress Mortgage = " + editable.StressMortgage);
Console.WriteLine("Stress Cashflow = " + editable.StressCashflow);
decimal totalRefurbCost = 10000;
editable.LoanRefurb = (decimal)6;
editable.LoanPurchase = (decimal)6;
editable.PurchaseTerm = 8;
editable.ActualOffer = 57500;
editable.BrokerFee = 499;
editable.RefinanceFee = 750;
Console.WriteLine("Cost of Money & Refinance");
Console.WriteLine("---------------");
editable.StampTax = editable.ActualOffer * (editable.StampDuty/100);
editable.AngelRefurb = ((((totalRefurbCost) * editable.LoanRefurb / 100)) / 12) * editable.RefurbTerm;
editable.OtherTotal = editable.StampTax + editable.Survey + editable.Legals + editable.CostsOther;
editable.AngelPurchase = (((editable.ActualOffer + editable.OtherTotal + editable.BrokerFee) * (editable.LoanPurchase / 100)) / 12) * editable.PurchaseTerm;
editable.MoneyTotal = editable.BrokerFee + editable.LicenseFee + editable.RefinanceFee + editable.AngelRefurb + editable.AngelPurchase;
Console.WriteLine("Total Other Costs = " + editable.OtherTotal);
Console.WriteLine("Angel Investor for Refurb = " + editable.AngelRefurb);
Console.WriteLine("Angel Investor for Purchase = " + editable.AngelPurchase);
Console.WriteLine("Total Cost of Money = " + editable.MoneyTotal);
editable.Payback1 = editable.Cashflow * 12;
editable.Payback2 = editable.Cashflow * 24;
editable.Payback3 = editable.Cashflow * 36;
editable.Payback4 = editable.Cashflow * 48;
editable.DrawnDownLTV = editable.MortgageAfter;
editable.MimoOffer = editable.DrawnDownLTV - editable.MoneyTotal - editable.OtherTotal - totalRefurbCost;
editable.RefurbOtherOffer = editable.DrawnDownLTV - editable.OtherTotal - totalRefurbCost;
editable.RefurbOffer = editable.DrawnDownLTV - totalRefurbCost;
editable.MaxOffer1 = editable.Payback1 + editable.MimoOffer;
editable.MaxOffer2 = editable.Payback2 + editable.MimoOffer;
editable.MaxOffer3 = editable.Payback3 + editable.MimoOffer;
editable.MaxOffer4 = editable.Payback4 + editable.MimoOffer;
editable.LeftMimo = editable.ActualOffer - editable.MimoOffer;
editable.RoiMimo = (editable.Cashflow * 12) / editable.LeftMimo;
Console.WriteLine("Other");
Console.WriteLine("---------------");
Console.WriteLine("Payback 1 = " + editable.Payback1);
Console.WriteLine("Payback 2 = " + editable.Payback2);
Console.WriteLine("Payback 3 = " + editable.Payback3);
Console.WriteLine("Payback 4 = " + editable.Payback4);
Console.WriteLine("Mimo Offer = " + editable.MimoOffer);
Console.WriteLine("Refurb Other = " + editable.RefurbOtherOffer);
Console.WriteLine("Refurb Offer = " + editable.RefurbOffer);
Console.WriteLine("Max Offer 1 = " + editable.MaxOffer1);
Console.WriteLine("Max Offer 2 = " + editable.MaxOffer2);
Console.WriteLine("Max Offer 3 = " + editable.MaxOffer3);
Console.WriteLine("Max Offer 4 = " + editable.MaxOffer4);
Console.WriteLine("Left Mimo = " + editable.LeftMimo);
Console.WriteLine("ROI Mimo = " + editable.RoiMimo);
editable.SellingCosts = editable.Duv * (decimal)0.012;
editable.Profit = editable.Duv - totalRefurbCost - editable.OtherTotal - editable.MoneyTotal - editable.ActualOffer - editable.SellingCosts;
Console.WriteLine("Cost of Money & Refinance");
Console.WriteLine("---------------");
Console.WriteLine("Selling Costs = " + editable.SellingCosts);
Console.WriteLine("Profit = " + editable.Profit);
public PropertyNumbers GetNumbers(PropertyNumbers theNumbers, decimal refurb)
var propertyNumber = new PropertyNumbers();
propertyNumber = theNumbers;
decimal totalCostOfMoney;
propertyNumber.RentalPcm = propertyNumber.Ast * propertyNumber.AstPcm;
decimal cashflowManagementFee = propertyNumber.RentalPcm * propertyNumber.ExpensesFee / 100;
decimal cashflowExpenseOther = propertyNumber.RentalPcm * propertyNumber.ExpensesOther / 100;
decimal totalRefurbCost = refurb;
decimal DepositPrice = propertyNumber.Duv * propertyNumber.DepositRate / 100;
propertyNumber.MortgagePa = DepositPrice * propertyNumber.MortgageRate / 100;
propertyNumber.DrawnDownLTV = DepositPrice;
propertyNumber.MortgagePcm = propertyNumber.MortgagePa / 12;
propertyNumber.StampTax = propertyNumber.ActualOffer * propertyNumber.StampDuty / 100;
propertyNumber.AngelRefurb = (((totalRefurbCost) * propertyNumber.LoanRefurb / 100)) * propertyNumber.RefurbTerm;
propertyNumber.Cashflow = propertyNumber.RentalPcm - cashflowManagementFee - cashflowExpenseOther - propertyNumber.MortgagePcm ;
propertyNumber.AngelPurchase = (((propertyNumber.ActualOffer + propertyNumber.StampDuty / 100 + propertyNumber.StampTax + propertyNumber.Legals + propertyNumber.BrokerFee) * propertyNumber.LoanPurchase / 100)) * propertyNumber.PurchaseTerm;
totalCostOfMoney = propertyNumber.BrokerFee + propertyNumber.LicenseFee + propertyNumber.RefinanceFee + propertyNumber.AngelRefurb + propertyNumber.AngelPurchase;
otherCostTotal = propertyNumber.StampDuty /100 + propertyNumber.StampTax + propertyNumber.Survey + propertyNumber.Legals + propertyNumber.CostsOther;
propertyNumber.SellingCosts = (propertyNumber.Duv) * (decimal)0.012;
propertyNumber.Profit = propertyNumber.Duv - totalRefurbCost - otherCostTotal - totalCostOfMoney - propertyNumber.ActualOffer - propertyNumber.SellingCosts;
propertyNumber.Upfront = propertyNumber.ActualOffer + totalRefurbCost + otherCostTotal;
propertyNumber.MmoOffer = propertyNumber.DrawnDownLTV - totalCostOfMoney - otherCostTotal - totalRefurbCost;
propertyNumber.LeftMimo = propertyNumber.ActualOffer - propertyNumber.MmoOffer;
propertyNumber.RoiMimo = ((propertyNumber.Cashflow * 12) / propertyNumber.LeftMimo) * 100;
propertyNumber.RefurbOffer = propertyNumber.DrawnDownLTV - totalRefurbCost;
propertyNumber.RefurbOtherOffer = propertyNumber.DrawnDownLTV - otherCostTotal - totalRefurbCost;
propertyNumber.Payback1 = propertyNumber.Cashflow * 12;
propertyNumber.Payback2 = propertyNumber.Cashflow * 24;
propertyNumber.Payback3 = propertyNumber.Cashflow * 36;
propertyNumber.Payback4 = propertyNumber.Cashflow * 48;
propertyNumber.MaxOffer1 = propertyNumber.MmoOffer + propertyNumber.Payback1;
propertyNumber.MaxOffer2 = propertyNumber.MmoOffer + propertyNumber.Payback2;
propertyNumber.MaxOffer3 = propertyNumber.MmoOffer + propertyNumber.Payback3;
propertyNumber.MaxOffer4 = propertyNumber.MmoOffer + propertyNumber.Payback4;
propertyNumber.StressMortgage = (DepositPrice * propertyNumber.StressRate / 100) / 12;
propertyNumber.StressCashflow = propertyNumber.RentalPcm - propertyNumber.StressMortgage - cashflowManagementFee - cashflowExpenseOther;
propertyNumber.MortgagePa = DepositPrice * propertyNumber.MortgageRate / 100;
propertyNumber.RefurbCost = totalRefurbCost;
propertyNumber.OtherTotal = otherCostTotal;
propertyNumber.MoneyTotal = totalCostOfMoney;
propertyNumber.MimoOffer = propertyNumber.MmoOffer;
propertyNumber.DepositTotal = DepositPrice;
propertyNumber.MortgageAfter = propertyNumber.Duv - DepositPrice;
public struct PropertyNumbers
public decimal RentalPcm;
public decimal ExpensesFee;
public decimal ExpensesOther;
public decimal DepositRate;
public decimal MortgagePa;
public decimal MortgageRate;
public decimal DrawnDownLTV;
public decimal MortgagePcm;
public decimal ActualOffer;
public decimal StampDuty;
public decimal AngelRefurb;
public decimal RefurbTerm;
public decimal AngelPurchase;
public decimal BrokerFee;
public decimal LoanPurchase;
public decimal PurchaseTerm;
public decimal LicenseFee;
public decimal RefinanceFee;
public decimal CostsOther;
public decimal SellingCosts;
public decimal RefurbOffer;
public decimal RefurbOtherOffer;
public decimal MaxOffer1;
public decimal MaxOffer2;
public decimal MaxOffer3;
public decimal MaxOffer4;
public decimal StressMortgage;
public decimal StressRate;
public decimal StressCashflow;
public decimal RefurbCost;
public decimal OtherTotal;
public decimal MoneyTotal;
public decimal MimoOffer;
public decimal DepositTotal;
public decimal MortgageAfter;
public decimal LoanRefurb;