-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLoanClasses.py
More file actions
50 lines (31 loc) · 1.36 KB
/
LoanClasses.py
File metadata and controls
50 lines (31 loc) · 1.36 KB
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
import numpy as np
MONTHSINYEAR = 12
class Loan:
def __init__(self, loanAmount, interestRate, amortizationRate):
self.loanAmount = loanAmount
self.interestRate = interestRate
self.amortizationRate = amortizationRate
self.remainingLoan = loanAmount
self.remainingInterest = 0
self.__updateTotal()
def __updateTotal(self):
self.remainingToPay = self.remainingLoan + self.remainingInterest
def __payLoan(self, amount):
interestPaid = np.min([self.remainingInterest, amount])
self.remainingInterest -= interestPaid
loanPaid = 0
if amount > interestPaid:
loanPaid = np.min([self.remainingLoan, amount - interestPaid])
self.remainingLoan -= loanPaid
self.__updateTotal()
return interestPaid + loanPaid
def performLoanLoopSeries(self):
costPerMonth = self.loanAmount * self.amortizationRate
interestPerMonth = self.interestRate/MONTHSINYEAR
totalCost = 0
while self.remainingLoan > 0:
self.remainingInterest += self.remainingToPay * interestPerMonth
self.__updateTotal()
print(self.remainingLoan, self.remainingInterest, self.remainingToPay)
totalCost += self.__payLoan(costPerMonth + self.remainingInterest)
print(totalCost)