|
|
此文章由 gauss 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 gauss 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 gauss 于 2021-10-9 16:00 编辑
scorpionzn 发表于 2021-10-9 14:26 
我不太理解楼主假设的条件。
以下是我的假设和计算结果,楼主看看跟你想的是否一样。
我的理解是楼主假设转贷利率一样的情况下才能比较。
我做了一个段code,发现结论是repayment没有影响。
def mortgagecalculator(mortgage,years,interest):
interest=interest/100
nper=years*12
interest_monthly=interest/12
numerator=interest_monthly*((1+interest_monthly)**nper)
denominator=(1+interest_monthly)**nper-1
payment=float("{0:.2f}".format(mortgage*numerator/denominator))
return(payment)
interest=2.59
years=30
payments_year=12
mortgage=980000
start_date=(date(2021,9,20))
print(start_date)
repay=mortgagecalculator(mortgage,years,interest)
print(repay)
pmt=-1*npf.pmt(interest/1200,years*payments_year,mortgage)
print("pmt is"+ str(pmt))
pmt_year=-1*npf.pmt(interest/100,years,mortgage)
print("pmt by year is"+ str(pmt_year/12))
rng = pd.date_range(start_date, periods=years * payments_year, freq='MS')
rng.name = "Payment Date"
df = pd.DataFrame(index=rng, columns=['Payment', 'Principal Paid', 'Interest Paid', 'Ending Balance'], dtype='float')
df.reset_index(inplace=True)
df.index += 1
df.index.name = "Period"
df['Payment']=-1*npf.pmt(interest*0.01/12,years*payments_year,mortgage)
df['Principal Paid']=-1*npf.ppmt(interest*0.01/payments_year,df.index,years*payments_year,mortgage)
df['Interest Paid']=-1*npf.ipmt(interest*0.01/payments_year,df.index,years*payments_year,mortgage)
df=df.round(2)
df["Ending Balance"]=0
df.loc[1,"Ending Balance"]=mortgage -df.loc[1,"Principal Paid"]
for period in range(2,len(df)+1):
previous_balance=df.loc[period-1,'Ending Balance']
principal_paid=df.loc[period,"Principal Paid"]
if previous_balance==0:
df.loc[period,['payment','Principal Paid','Interest Paid','Ending Balance']]==0
continue
elif principal_paid<=previous_balance:
df.loc[period,'Ending Balance']=previous_balance - principal_paid
print("Original repayment is "+str(mortgagecalculator(mortgage,years,interest)))
check_year=5
print("after "+str(check_year)+" we refinance and new repayment is")
print(mortgagecalculator(df.loc[check_year*12,'Ending Balance'],years-check_year,interest))
我思考了一下背后的原理:在上面的例子中5年后,情况A:继续原银行还贷,情况B:refinancing新的银行到25年。这个时候利息到pay off的时候,两种情况应该是一样(假设原银行和新银行利率一致)。所以还款总额是一样的。如果到期时间一致,那repayment也就一样了,不存在多还利息的问题。 楼主所说的重置principalvsinterest的比例,我只能理解为一种沉默成本。对如果提前还款应该是有区别的(比如一开始mortgage30年,后来5年后refiance20年还清(实际总时间25年),vs 25年mortage) |
评分
-
查看全部评分
|