1 背景
在实际生活中,我们可能会遇到一些借贷问题。比如,车贷、房贷、民间借贷,或者银行存储利率问题。我们可能是借方,也可能是被借方,这些都涉及到利率的计算。因此,研究简单的借贷模型,获得对应利率,方便我们作参考。
2 理论
2.1 约定
这里在介绍利率之前,这里取一年为365天,约定日利\(r_d\)、月利\(r_m\)、年利\(r_y\)之间以复利的关系进行转换,即它们存在如下关系:
(2.1-1)
$$
\begin{cases}
r_m&=(1+r_d)^{365/12}-1
\\
r_y&=(1+r_d)^{365}-1
\\
r_y&=(1+r_m)^{12}-1
\\
\\
r_m&=\exp(\dfrac{1}{12}\ln(1+r_y))-1
\\
\\
r_d&=\exp(\dfrac{1}{365}\ln(1+r_y))-1
\end{cases}
$$
注意,有些地方并没有使用复利进行转换。比如月息1%,不考虑复利时对应年息为12%, 而考虑复利时对应年息是12.682503013197%, 由于大部分场景考虑复利获利, 因此本文使用复利转换方式。
2.2 利率模型
借贷模型可以等价描述为: A向B借款\(s\)元, 借款月利为\(r\), 借款期限为\(n\)个月, 每个月还款依次为\(a_1、a_2、a_3……a_{n-1}、a_n\),直到还完。
对于上面这个数学模型,可以看成A向B借了\(n\)份钱,每一份钱在同利率\(r\)情况下,单独签订对应月份数进行还款。因此,这里可以设每份借的钱分别为\(b_i\),其中第\(i\)份钱只借\(i\)个月。因此可以建立如下数学模型:
(2.2-1)
$$
\begin{cases}
s&=\sum_{i=1}^nb_i
\\
a_i&=b_i(1+r)^i
\end{cases}
$$
这里设\(x=1+r\),对(2.2-1)变形有
(2.2-2)
$$
a_1x^{n-1}+a_2x^{n-2}+…+a_{n-1}x+a_n=sx^n
$$
很明显,(2.2-2)是一元\(n\)次多项式求解,这已经有成熟的算法,可以直接求得\(x\),进而求得利率 \(r=x-1\),以及第\(i\)份钱的本金\(b_i\),以及第\(i\)个月累计还的本金\(S_i\)和累计还的利息\(I_i\):
(2.2-3)
$$
\begin{cases}
b_i&=\dfrac{a_i}{x^i}
\\
S_i&=\sum_{j=1}^ib_j
\\
I_i&=\sum_{j=1}^i(a_j-b_j)
\end{cases}
$$
注意:①这里描述的借贷按月进行处理,对于日或者年借贷模型一致;②大部分借贷都适用上面的2.2的数学模型,实际使用中可以使用这个模型等效探知借贷利率,以及每个期间本金与利息情况;③在实际使用时,可考虑将服务费等一并额外费用算在借贷金额里。
2.3 等额本息
等额本息,是每个月还款固定的一种还款方式。如果每个月固定还款为\(a\)元,因此只需要在2.2的模型里设置 \(a_1=a_2=…=a_n=a\) 即可求解,代入(2.2-2)可以等效求解如下方程
(2.3-1)
$$
a\dfrac{1-x^n}{1-x}=sx^n
$$
2.4 等额本金
等额本金是指在还款期内把贷款数总额等分,每月偿还同等数额的本金和剩余贷款在该月所产生的利息,因此只需要在2.2的模型里设置 \(a_i=\dfrac{s}{n}+\dfrac{s}{n}(n+1-i)r\) 即可求解,由于总额和每个月还款总数已知,这时(2.2-2)方程对任意值均成立,因此为了求解,使用如下方式求得利率
(2.4-1)
$$
r=\dfrac{1}{n+1-i}(\dfrac{na_i}{s}-1)
$$
3 例子
3.1 借贷案例1
A向B借款10万元,借期为3年。A向B承诺, 每个月固定给1000元利息给B, 3年期间总共会给利息3.6万元, 到期后向B返还本金10万。请问, A向B借款实际利率为多少?
这个案例中,套入2.2的模型可以得到如下参数
(3.1)
$$
\begin{cases}
s&=100000
\\
a_1&=1000
\\
a_2&=1000
\\
…
\\
a_{35}&=1000
\\
a_{36}&=100000+1000
\end{cases}
$$
将(3.1)代入(2.2)可以得到月息 \(r_m=1\%\), 年息为 \(r_y=12.682503013197\%\)。
3.2 借贷案例2
A向B借款10万元,借期为3年。A向B承诺, 按每个月1000元的利息计算, 利息在借款到期后一并结算, 3年期间总共产生利息3.6万元, 到期后向B返还本金10万以及支付3.6万利息。请问, A向B借款实际利率为多少?
这个案例中,套入2.2的模型可以得到如下参数
(3.2)
$$
\begin{cases}
s&=100000
\\
a_1&=0
\\
a_2&=0
\\
…
\\
a_{35}&=0
\\
a_{36}&=100000+36000
\end{cases}
$$
将(3.2)代入(2.2)可以得到月息 \(r_m=0.85778221376\%\), 年息为 \(r_y=10.793165135089\%\)。
从3.2可以发现,相同借款金额,利息提前还与否实际利率有一定差异。
3.3 借贷案例3
A向B借款10000元,借期为6个月。因为一些原因, A实际到手金额为9600元, A后续6个月每个月实际还款金额分别为2000元、2000元、2000元、2000元、1000元、1000元。
请问, A向B借款实际利率为多少?
这个案例中,套入2.2的模型可以得到如下参数
(3.3)
$$
\begin{cases}
s&=9600
\\
a_1&=2000
\\
a_2&=2000
\\
a_3&=2000
\\
a_4&=2000
\\
a_5&=1000
\\
a_6&=1000
\end{cases}
$$
将(3.3)代入(2.2)可以得到月息 \(r_m=1.332664497160 \%\), 年息为 \(r_y=17.217795276054 \%\)。
4 使用
对于上面的模型, 可以使用MathSword提供的LendingRate函数进行利率反算,也可以使用内置的贷款工具箱进行快速计算。