python 貸款利息計算公式
固定支付貸款
固定支付貸款(fixed-payment loan) 也稱為分期償還貸款(fully amortized loan)。 貸款人向借款人提供一定數量的資金,在約定的若干年度內,借款人每個期限償還固定的金額,其中包括本金,也包括利息。 例如,你借款金額為1000元,每年償還126元,還款年限為25年。 分期貸款與抵押貸款,如車貸、房貸,通常都屬於這種型別。
固定支付貸款相關的幾個變數為:
- 貸款金額LV (loan value)
- 貸款利率i (interest rate)
- 貸款年限n
- 每期還款金額FP (fixed-payment)
我們把每期償還的金額FP折算成等價的現值,折現率等於貸款利率。然後令貸款金額等於它的現值便可得出以下公式:
假設你需要購買一棟房子,需要向銀行貸款 10 萬元貸款,從銀行貸款的利率為 7%, 你想要在 20 年還完貸款,每年需要付多少錢呢?
我們把每期還款金額折現後求和,應該等於貸款金額,得出:
其中 n = 貸款年數 = 20, LV = 貸款金額 = 10萬, i = 貸款利率 = 0.07
求解上述公式得出 FP = 每年還款金額 = 9439.29 元
等比公式
我們知道等比數列求和:
兩邊乘以公比q得:
上述兩式相減得出:
所以,當 q 不等於 1 時,可得到:
公式化簡
公式的右邊是一個等比數列求和公式,我們令:
- $\displaystyle a_1 = \frac{FP}{(1+i)^n}$
- $q = 1 + i$
把等比求和帶入折現公式中,得到以下結果:
一般情況下,我們根據貸款利率、貸款金額、貸款年限,求得每期還款金額。
下面我們使用python定義一個函式計算上述公式:
%matplotlib notebook import numpy as np def calc_pv(lv, i, n): ''' 計算固定支付貸款每期還款金額 @lv : 貸款金額 @i: 貸款利率 @n: 貸款期數 ''' qn = np.power(1 + i, n) fp = qn * lv * i fp = fp / (qn - 1) return fp # 按年付款 print("貸款10萬, 利率0.07, 20年還清,每年需還款: %f 元" % calc_pv(100000, 0.07, 20)) # 按月付款 print('若按月還款的話,每月需還款 %f 元' % calc_pv(100000, 0.07/12, 20 * 12))
貸款10萬, 利率0.07, 20年還清,每年需還款: 9439.292574 元 若按月還款的話,每月需還款 775.298936 元
按月付款
按月付款與按年付款的區別僅僅在於利率和還款期數的區別。
- 月利率等於年利率除以12
- 還款期數n等於年數乘以12。
我們房貸一般是按月還款,我們可以自己根據上述公式或者函式計算出每月還款金額。
當然,我們也可以使用WebPubInfo/Cal_Loan_Per.aspx?chnl=dkjsq" rel="nofollow,noindex" target="_blank">招行個人貸款計算器 計算每月還款金額,其結果跟我們計算的是一樣的。
利率計算
當我們知道貸款金額,每月還款金額,貸款年數時,我們還可以通過公式計算出銀行的貸款利率。
如果使用 python 的話,可以使用numpy.irr 函式。
下面我們使用程式碼計算利率:
import numpy as np def calc_irr(lv, fp, n): values = np.full(n + 1, fp) values[0] = -lv return np.irr(values) print('如果貸款10萬,每年還 9439.29 元,貸款20年,則貸款利率為: ', calc_irr(100000, 9439.29, 20))
如果貸款10萬,每年還 9439.29 元,貸款20年,則貸款利率為:0.06999996491048943