Professional Documents
Culture Documents
[1]:
import pandas as pd
import numpy as np
import numpy_financial as npf
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")
In [2]:
def amortization_schedule(int_rate, mortgage_amount, time_years):
Total_amount = -(mortgage_amount) # converts the amount to negative to signify a cash ouflow
Monthly_rate = (int_rate/100)/12
periods = time_years*12
n_per = np.arange(time_years * 12) + 1
Repayment_amount = npf.ipmt(Monthly_rate, n_per, periods, Total_amount)
Principal_amount = npf.ppmt(Monthly_rate, n_per, periods, Total_amount)
# Joining the data
df1 = list(zip(n_per, Repayment_amount, Principal_amount))
df_Loan_Amortization = pd.DataFrame(df1, columns=['Period','Interest','Principal'])
df_Loan_Amortization['Monthly_Payment'] = df_Loan_Amortization['Interest'] + df_Loan_Amortization['Principal'
]
#Cummulative sum of the monthly paymsnts
df_Loan_Amortization['Outstanding_balance'] = df_Loan_Amortization['Monthly_Payment'].cumsum()
# Reversing
df_Loan_Amortization.Outstanding_balance = df_Loan_Amortization.Outstanding_balance.values[::-1]
return(df_Loan_Amortization)
In [3]:
Twenty_Yr_Loan = 1000000
Time_Years = 20
In [4]:
Twenty_Year_Fixed_Mortgage
Out[4]:
In [5]:
Sum_Interest = round(Twenty_Year_Fixed_Mortgage['Interest'].sum(),0)
format (Sum_Interest, ",")
Out[5]:
'271,767.0'
In [6]:
Sum_Principal = round(Twenty_Year_Fixed_Mortgage['Principal'].sum(),0)
format (Sum_Principal, ",")
Out[6]:
'1,000,000.0'
In [7]:
Thirty_Yr_Loan = 1000000
Time_Years_2 = 30
In [8]:
Thirty_Year_Fixed_Mortgage
Out[8]:
In [9]:
Sum_Interest2 = round(Thirty_Year_Fixed_Mortgage['Interest'].sum(),0)
format (Sum_Interest2, ",")
Out[9]:
'718,695.0'
In [10]:
Sum_Principal2 = round(Thirty_Year_Fixed_Mortgage['Principal'].sum(),0)
format (Sum_Principal2, ",")
Out[10]:
'1,000,000.0'