「行者按:以前寫的一篇舊文,刪去『題後話』,從而略去了『在偿付mortgage的中间有时会一次性付清(包括refinance),这时的计算略有不同。』等諸多文字。」
略谈按揭贷款的利息计算
關東行者
在美国买大宗商品,例如房屋和汽车,除非一次支付,一般都是从金融机构(例如银行)做抵押贷款(华人世界一般称为“按揭”)。以买房为例,抵押贷款(Mortgage Loan):
A mortgage loan is a loan secured by real property through the use of a mortgage note which evidences the existence of the loan and the encumbrance of that realty through the granting of a mortgage which secures the loan. However, the word mortgage alone, in everyday usage, is most often used to mean mortgage loan.
在美国, 一个mortgage loan一般是通过amortization方式来偿付的。即, 在一定期限内,按月支付定量的款项(包括本金和利息),期满付清。
The most common way to repay a secured mortgage loan is to make regular payments of the capital (also called the principal) and interest over a set term. This is commonly referred to as (self) amortization in the U.S.
买汽车时,用法相同。下面的计算虽然是针对买房,但对购买汽车贷款一样适用。
一,常规算法:
筆者顺手用perl写个程序来演算结果,下面以perl的样式罗列主要思路。
这里$term是年限(折合成月就是$term*12,记成$n),例如30年;$rate是年利率,例如5.25%(记成0.0525;折合成月率就是$rate/12,记成$m_rate);$loan是实际贷款额,例如100,000美元。
每月供款额记成$mortgage,第$i次付款后的贷款余额用p($i)表示,则演算(这里的*是乘法运算,类似x;**是乘方运算,类似^;/是除法运算,类似÷)的大致过程是:
p(0) = $loan;
p(1) = P(0)*(1+$m_rate) - $mortgage;
p(2) = p(1)*(1+$m_rate) - $mortgage;
p($i) = p($i-1)*(1+$m_rate) - $mortgage;
p($n) = p($n-1)*(1+$m_rate) - $mortgage;
根据等比数列求和(sum of the numbers in a geometric progression),可以得到期满时:
p($n) = $loan*(1+$m_rate)**$n - $mortgage*(((1+$m_rate)**$n) - 1)/$m_rate;
因为p($n) = 0(“付清”),所以:
$mortgage = $loan*$m_rate/(1-(1+$m_rate)**(0-$n));
这就是每月应付款。
根据演算,基于本金余额(balance),还可以推出每月支付的本金和利息(在下面的例子中,mortgage = 月付本金+月付利息)。下面是三个例子(第三个买车的例子,因为2年期比较短,所以给出了所有的结果;前两个太长,只给出三行作为参考):
(A) $loan = 100000.00, $rate = 0.0525, $term = 30;
Balance = $99885.30 after 1 payment(s) while mortgage: $552.20 = $114.70 + $437.50
Balance = $99770.09 after 2 payment(s) while mortgage: $552.20 = $115.21 + $437.00
...
Balance = $98710.29 after 11 payment(s) while mortgage: $552.20 = $119.82 + $432.38
(B) $loan = 533000.00, $rate = 0.0425, $term = 30;
Balance = $532265.67 after 1 payment(s) while mortgage: $2622.04 = $734.33 + $1887.71
Balance = $531528.74 after 2 payment(s) while mortgage: $2622.04 = $736.93 + $1885.11
...
Balance = $524777.78 after 11 payment(s) while mortgage: $2622.04 = $760.76 + $1861.28
(C) $loan = 16077.83, $rate = 0.019, $term = 2;
Balance = $16077.83 after 0 payment(s) while mortgage: $683.25 = $0.00 + $683.25
Balance = $15420.04 after 1 payment(s) while mortgage: $683.25 = $657.79 + $25.46
Balance = $14761.20 after 2 payment(s) while mortgage: $683.25 = $658.83 + $24.42
Balance = $14101.33 after 3 payment(s) while mortgage: $683.25 = $659.88 + $23.37
Balance = $13440.41 after 4 payment(s) while mortgage: $683.25 = $660.92 + $22.33
Balance = $12778.44 after 5 payment(s) while mortgage: $683.25 = $661.97 + $21.28
Balance = $12115.42 after 6 payment(s) while mortgage: $683.25 = $663.02 + $20.23
Balance = $11451.36 after 7 payment(s) while mortgage: $683.25 = $664.07 + $19.18
Balance = $10786.24 after 8 payment(s) while mortgage: $683.25 = $665.12 + $18.13
Balance = $10120.07 after 9 payment(s) while mortgage: $683.25 = $666.17 + $17.08
Balance = $9452.84 after 10 payment(s) while mortgage: $683.25 = $667.23 + $16.02
Balance = $8784.56 after 11 payment(s) while mortgage: $683.25 = $668.28 + $14.97
Balance = $8115.22 after 12 payment(s) while mortgage: $683.25 = $669.34 + $13.91
Balance = $7444.82 after 13 payment(s) while mortgage: $683.25 = $670.40 + $12.85
Balance = $6773.36 after 14 payment(s) while mortgage: $683.25 = $671.46 + $11.79
Balance = $6100.84 after 15 payment(s) while mortgage: $683.25 = $672.52 + $10.72
Balance = $5427.25 after 16 payment(s) while mortgage: $683.25 = $673.59 + $9.66
Balance = $4752.59 after 17 payment(s) while mortgage: $683.25 = $674.66 + $8.59
Balance = $4076.87 after 18 payment(s) while mortgage: $683.25 = $675.72 + $7.52
Balance = $3400.08 after 19 payment(s) while mortgage: $683.25 = $676.79 + $6.46
Balance = $2722.21 after 20 payment(s) while mortgage: $683.25 = $677.87 + $5.38
Balance = $2043.27 after 21 payment(s) while mortgage: $683.25 = $678.94 + $4.31
Balance = $1363.26 after 22 payment(s) while mortgage: $683.25 = $680.01 + $3.24
Balance = $682.17 after 23 payment(s) while mortgage: $683.25 = $681.09 + $2.16
Balance = $0.00 after 24 payment(s) while mortgage: $683.25 = $682.17 + $1.08
二,按月定额多付算法:
如果贷款者每月比规定的$mortgage多支付一些钱(记作$overpay,直接从balance里扣除),还可以加速偿还本金,可以提前付清所有的贷款(有的贷款有条件限制,请咨询提供贷款的银行。),从而减少非常多本该付的利息。
假设在第$i ($i >= 1)次时开始多支付$overpay(当然每次的$overpay可以不同,但计算复杂些):
p($i) = p($i-1)*(1+$m_rate) - $mortgage - $overpay;
p($i+1) = p($)*(1+$m_rate) - $mortgage - $overpay;
p($i+$j) = p($i+$j)*(1+$m_rate) - $mortgage - $overpay;
p($i+$j) = $loan*(1+$m_rate)**($i+$j) - $mortgage*((1+$m_rate)**($i+$j) - 1)/$m_rate - $overpay*((1+$m_rate)**($j+1) - 1)/$m_rate;
可以看出通项公式:
p($k) = $loan*(1+$m_rate)**($k) - $mortgage*((1+$m_rate)**($k) - 1)/$m_rate - $overpay*((1+$m_rate)**($k-$i+1) - 1)/$m_rate;
例如$i = 1(即从一开始就多支付)时:
p($k) = $loan*(1+$m_rate)**($k) - ($mortgage + $overpay)*((1+$m_rate)**($k) - 1)/$m_rate;
还以前面的三个例子为例:
(A) $loan = 100000.00, $rate = 0.0525, $term = 30, $overpay = 276.80, $i = 1;
Balance = $99608.50 after 1 payments(s) while mortgage: $552.20 = $114.70 + $437.50
Balance = $99215.28 after 2 payments(s) while mortgage: $552.20 = $116.42 + $435.79
…
Balance = $95598.01 after 11 payments(s) while mortage: $552.20 = $132.17 + $420.03
(B) $loan = 533000.00, $rate = 0.0425, $term = 30, $overpay = 276.80, $i = 1;
Balance = $531988.87 after 1 payments(s) while mortage: $2622.04 = $734.33 + $1887.71
Balance = $530974.16 after 2 payments(s) while mortage: $2622.04 = $737.91 + $1884.13
...
Balance = $521678.49 after 11 payments(s) while mortage: $2622.04 = $770.72 + $1851.32
(C) $loan = 16077.83, $rate = 0.019, $term = 2, $overpay = 276.80, $i = 1;
Balance = $16077.83 after 0 payments(s) while mortgage: $683.25 = $-276.80 + $960.05
Balance = $15143.24 after 1 payments(s) while mortgage: $683.25 = $657.79 + $25.46
Balance = $14207.17 after 2 payments(s) while mortgage: $683.25 = $659.27 + $23.98
Balance = $13269.61 after 3 payments(s) while mortgage: $683.25 = $660.75 + $22.49
Balance = $12330.57 after 4 payments(s) while mortgage: $683.25 = $662.24 + $21.01
Balance = $11390.05 after 5 payments(s) while mortgage: $683.25 = $663.73 + $19.52
Balance = $10448.03 after 6 payments(s) while mortgage: $683.25 = $665.21 + $18.03
Balance = $9504.53 after 7 payments(s) while mortgage: $683.25 = $666.71 + $16.54
Balance = $8559.53 after 8 payments(s) while mortgage: $683.25 = $668.20 + $15.05
Balance = $7613.03 after 9 payments(s) while mortgage: $683.25 = $669.70 + $13.55
Balance = $6665.04 after 10 payments(s) while mortgage: $683.25 = $671.19 + $12.05
Balance = $5715.54 after 11 payments(s) while mortgage: $683.25 = $672.70 + $10.55
Balance = $4764.54 after 12 payments(s) while mortgage: $683.25 = $674.20 + $9.05
Balance = $3812.04 after 13 payments(s) while mortgage: $683.25 = $675.70 + $7.54
Balance = $2858.03 after 14 payments(s) while mortgage: $683.25 = $677.21 + $6.04
Balance = $1902.50 after 15 payments(s) while mortgage: $683.25 = $678.72 + $4.53
Balance = $945.47 after 16 payments(s) while mortgage: $683.25 = $680.24 + $3.01
根据演算,还可以推算出提前多少个月就可付清所有贷款(在买车的例子中,原计划24个月供完款,但由于每月多供$276.80,实际上在第17次上就可完全付清。),以及少支付了多少利息(留给读者自己计算,呵呵)。
(完)