等额本金

  • 总贷款额 $A$
  • 月利率 $\beta$
  • 总期数(月):$m$ 月还款额:$$X=\frac{A\beta(1+\beta)^{m}}{(1+\beta)^{m}-1}$$

第一个月还款利息(interest):$lx_1=A\beta$
第一个月还款本金(principal):$bj_1 = X - interest_1$
第一个月剩余本金:$A_1 = A - bj_1$
第 $i$ 个月利息:$lx_i = A_{i-1} \beta$

以此类推


In [1]:
import pandas as pd
from pandas import Series, DataFrame

In [14]:
A = 840000
base_rate = 4.66
discount = 95
n_years = 30

In [20]:
def calcu_x(A,base_rate=4.90,n_years=30,discount=100):
    '''总贷款数(元),年基准利率(%),利率折扣(%),贷款年限'''
    beta = base_rate/100 * discount/100 /12
    m = 12* n_years
    X = (A*beta*(1+beta)**m)/((1+beta)**m-1)
    
    return X

In [222]:
X1 = calcu_x(840000,4.66,30)

In [223]:
X2= calcu_x(500000,3.25,15)

In [224]:
lixi_1 =A * base_rate/100/12
benjin_1 = X1 - lixi_1
A1 = A - benjin_1

In [229]:
dic_1 = {"月供":X1,"月供本金":benjin_1, "月供利息":lixi_1,"本金余额":A1}

In [231]:
df = None
df = DataFrame(dic_1,index=[0])
dic_last = dic_1
for i in range(2,361):
    lixi_new =dic_last["本金余额"] * base_rate/100/12
    benjin_new = X1 - lixi_new
    A_new = dic_last["本金余额"] - benjin_new
    dic_new = {"月供":X1,"月供本金":benjin_new, "月供利息":lixi_new,"本金余额":A_new}
    df = df.append(dic_new,ignore_index=True )
    dic_last = dic_new

In [232]:
df


Out[232]:
月供 月供利息 月供本金 本金余额
0 4336.385128 3262.000000 1074.385128 8.389256e+05
1 4336.385128 3257.827804 1078.557324 8.378471e+05
2 4336.385128 3253.639407 1082.745722 8.367643e+05
3 4336.385128 3249.434744 1086.950384 8.356774e+05
4 4336.385128 3245.213754 1091.171375 8.345862e+05
5 4336.385128 3240.976371 1095.408757 8.334908e+05
6 4336.385128 3236.722534 1099.662594 8.323911e+05
7 4336.385128 3232.452178 1103.932951 8.312872e+05
8 4336.385128 3228.165238 1108.219890 8.301790e+05
9 4336.385128 3223.861651 1112.523478 8.290664e+05
10 4336.385128 3219.541351 1116.843777 8.279496e+05
11 4336.385128 3215.204275 1121.180854 8.268284e+05
12 4336.385128 3210.850356 1125.534773 8.257029e+05
13 4336.385128 3206.479529 1129.905599 8.245730e+05
14 4336.385128 3202.091729 1134.293399 8.234387e+05
15 4336.385128 3197.686890 1138.698239 8.223000e+05
16 4336.385128 3193.264945 1143.120184 8.211569e+05
17 4336.385128 3188.825828 1147.559300 8.200093e+05
18 4336.385128 3184.369473 1152.015656 8.188573e+05
19 4336.385128 3179.895812 1156.489316 8.177008e+05
20 4336.385128 3175.404778 1160.980350 8.165398e+05
21 4336.385128 3170.896305 1165.488824 8.153743e+05
22 4336.385128 3166.370323 1170.014805 8.142043e+05
23 4336.385128 3161.826766 1174.558363 8.130298e+05
24 4336.385128 3157.265564 1179.119564 8.118506e+05
25 4336.385128 3152.686650 1183.698479 8.106669e+05
26 4336.385128 3148.089954 1188.295174 8.094786e+05
27 4336.385128 3143.475408 1192.909721 8.082857e+05
28 4336.385128 3138.842942 1197.542187 8.070882e+05
29 4336.385128 3134.192486 1202.192642 8.058860e+05
... ... ... ... ...
330 4336.385128 476.000969 3860.384159 1.187150e+05
331 4336.385128 461.009811 3875.375317 1.148396e+05
332 4336.385128 445.960437 3890.424692 1.109492e+05
333 4336.385128 430.852621 3905.532507 1.070436e+05
334 4336.385128 415.686136 3920.698992 1.031229e+05
335 4336.385128 400.460755 3935.924373 9.918702e+04
336 4336.385128 385.176249 3951.208879 9.523581e+04
337 4336.385128 369.832388 3966.552741 9.126926e+04
338 4336.385128 354.428941 3981.956187 8.728730e+04
339 4336.385128 338.965678 3997.419450 8.328988e+04
340 4336.385128 323.442366 4012.942762 7.927694e+04
341 4336.385128 307.858772 4028.526357 7.524841e+04
342 4336.385128 292.214661 4044.170467 7.120424e+04
343 4336.385128 276.509799 4059.875329 6.714436e+04
344 4336.385128 260.743950 4075.641179 6.306872e+04
345 4336.385128 244.916876 4091.468252 5.897726e+04
346 4336.385128 229.028341 4107.356787 5.486990e+04
347 4336.385128 213.078106 4123.307022 5.074659e+04
348 4336.385128 197.065930 4139.319198 4.660727e+04
349 4336.385128 180.991574 4155.393554 4.245188e+04
350 4336.385128 164.854796 4171.530333 3.828035e+04
351 4336.385128 148.655353 4187.729775 3.409262e+04
352 4336.385128 132.393002 4203.992126 2.988863e+04
353 4336.385128 116.067500 4220.317629 2.566831e+04
354 4336.385128 99.678599 4236.706529 2.143160e+04
355 4336.385128 83.226056 4253.159073 1.717844e+04
356 4336.385128 66.709621 4269.675507 1.290877e+04
357 4336.385128 50.129048 4286.256080 8.622512e+03
358 4336.385128 33.484087 4302.901041 4.319611e+03
359 4336.385128 16.774488 4319.610640 -3.846890e-08

360 rows × 4 columns


In [ ]: