用 AI 开发了一个房贷计算器(支持输入利率调整记录和提前还贷记录),邀请大家体验一下,欢迎提 bug

1 月 7 日
 wjs9092
鉴于没有找到一个符合需求的房贷计算器,用 AI 开发了一个,地址: https://calc.wjss.workers.dev/ 。

我的主要需求很简单,就是有一个房贷计算器,能够计算出的还款明细,与银行 App 里的还款记录一模一样。

目前开发这个计算器基本能满足我的需求,并且补充了银行 App 里的还款明细缺少一些信息,比如:利率调整的时间点、累计支付的利息等,以及银行 App 不能模拟提前还贷以及计算节省利息等

欢迎大家体验,默认数据是是根据拿真实案例和中国银行里的还款明细做过比对没问题。如果大家输入的案例发现有算不对的,欢迎提 bug 。希望 bug 里包含: 输入的参数,算错的地方和期望结果。
3193 次点击
所在节点    分享创造
17 条回复
wozhidaole
1 月 7 日
好像有点问题,但是我不确定信息填的是不是不太对
wozhidaole
1 月 7 日
@wozhidaole 不知道是不是这个原因


贷款总额 74 万
贷款发放日 2023-08-15
初始利率 2.85%
26 年 1 月利率 2.6%
贷款期限 12 年
还款方式 等额本息


2024/10/13
部分还款方式
月还款额不变,还款期限缩短
申请提前还贷本金
100000.0
申请提前还贷利息
1354.51
申请提前还贷金额
101354.51


2025/03/07
部分还款方式
月还款额不变,还款期限缩短
申请提前还贷本金
10000.0
申请提前还贷利息
665.56
申请提前还贷金额
10665.56

2025/07/03
部分还款方式
还款期限不变,月还款额减少
申请提前还贷本金
20000.0
申请提前还贷利息
546.78
申请提前还贷金额
20546.78

2025/09/03
部分还款方式
还款期限不变,月还款额减少
申请提前还贷本金
20000.0
申请提前还贷利息
556.37
申请提前还贷金额
20556.37


2025/12/22
部分还款方式
月还款额不变,还款期限缩短
申请提前还贷本金
12000.0
申请提前还贷利息
73.47
申请提前还贷金额
12073.47
wozhidaole
1 月 7 日
给你验证数据
leptonk
1 月 8 日
有一个问题,起贷日期和还款日期可能不是同一天,我的房贷就是,起贷是 22 号,但是还款日是 10 号,所以第一个月还款会低于月供,且每次利率变动是 22 号作为利率变化节点,前后两个月的还款额都不同。
fengci
1 月 8 日
期限缩短(月供基本不变) 没效果 还是按 月供递减(期限不变) 算了
fengci
1 月 8 日
@fengci 等额本金
japhetjiu699
1 月 8 日
兄弟,访问不了了

wjs9092
1 月 8 日
@wozhidaole 初始利率应该是 3.1 (下面是 AI 倒推出来的结果)。然后确实没考虑到 起贷日 和 还贷日 不一样的情况,晚点我再更新一版支持这个功能。

根据您提供的贷款信息和图片中的还款记录,我们可以通过数学公式进行严密的倒推。

### 一、 核心参数倒推过程

#### 1. 实际执行利率倒推
图片中第 4 行显示:**2023-10-21** 扣款利息为 **1,900.69 元**,此时的贷款余额(第 3 行显示)为 **735,751.26 元**。
通常银行按月计息,公式为:`月利息 = 剩余本金 × 月利率`。
* **月利率** = $1,900.69 \div 735,751.26 \approx 0.00258333$
* **年利率** = $0.00258333 \times 12 = 3.1\%$

**结论:** 虽然您提到的初始利率是 2.85%,但图片显示的还款记录是按 **3.1%** 的年利率执行的(可能是当时 LPR 加点后的结果)。

#### 2. 贷款期数倒推
我们利用等额本息首月还款本金的公式来反推总期数 $n$。
公式:$首月本金 = \text{月供} - \text{首月正常利息} = \frac{P \cdot i}{(1+i)^n - 1}$
其中:$P$(总额)= 740,000 ,$i$(月利率)= 0.00258333 ,图片第 3 行显示**首月本金为 4,248.74 元**。

* $4,248.74 = \frac{740,000 \times 0.00258333}{(1.00258333)^n - 1}$
* $(1.00258333)^n - 1 = \frac{1,911.66}{4,248.74} \approx 0.44993$
* $(1.00258333)^n \approx 1.44993$
* 通过对数计算:$n = \frac{\ln(1.44993)}{\ln(1.00258333)} \approx 144$

**结论:** 贷款总期数为 **144 期**,即确认为 **12 年**。

---

### 二、 具体月供计算过程(以 3.1% 利率为例)

#### 1. 标准月供计算(等额本息)
公式:$M = P \times \frac{i(1+i)^n}{(1+i)^n - 1}$
* $M = 740,000 \times \frac{0.00258333 \times (1.00258333)^{144}}{(1.00258333)^{144} - 1}$
* $M = 740,000 \times \frac{0.00258333 \times 1.44994}{0.44994}$
* **$M \approx 6,160.40$ 元/月**

#### 2. 为什么图片中第一期扣款总额是 6,542.74 元?
图片显示 2023-09-21 扣款:利息 2,294.00 + 本金 4,248.74 = **6,542.74 元**。
这是因为您的贷款发放日是 8 月 15 日,第一次还款是 9 月 21 日,中间间隔了 **37 天**(或者银行按 360 天/年计息,足月 30 天 + 额外 6 天 = 36 天)。
* **首月利息计算:** $740,000 \times 3.1\% \div 360 \times 36 \text{天} = 2,294.00 \text{元}$(与图片完全吻合)。
* 所以第一期比正常月供多出了约 382 元的利息。

---
wjs9092
1 月 8 日
@fengci 就是我缺真实测试数据,如果你有空的话可以贴一下数据,像 @wozhidaole 那样就好。有数据的话我应该能够把它调好
wjs9092
1 月 8 日
@japhetjiu699 cloudflare pages 国内好戏是访问不了,你的无痕模式是不是没发翻墙
japhetjiu699
1 月 8 日
@wjs9092 #10 现在再次访问可以了,最开始我就是没用无痕浏览器,也打不开,最后再用无痕,也打不开,可能中途你服务挂了,没开 v2 都不可以上
wozhidaole
1 月 8 日
@wjs9092 #8 初始利率确实是 3.1%
zsuper
1 月 8 日
看不懂是怎么用的。。。
zsuper
1 月 8 日
@zsuper 我刚好想提前还贷,感觉用不起来啊
wjs9092
1 月 8 日
@zsuper 额,文案太难懂吗?还是什么原因?

我觉得难的就是填 利率变动记录,自己都不一定知道什么时候新利率生效了。页面默认的案例,我也是根据真实历史每期还款明细数据去倒推出来的利率变动记录。

比如案例数据:
- 案例数据一开始都是固定利率 4.65
- 后来选了利率跟随 lpr 变动之后,虽然 lpr 可能一年变化多次,但是银行只有重新定价日(一般是起贷日才会调整利率)才会进行调整 利率,所以都是每年 11 月 20 号 才会有真实的利率变化的记录。
- 再之后又签了一个 每 3 个月 重新定价的协议,所以利率变化记录可能是每年的 11-20 、02-20 、05-20 、08-20 这 4 个日期才有可能产生利率变动记录。
- 中间有一个特殊的是 2024-10-25 是全国统一调整存量房贷,我调整的是 lpr -30 的加点, 所以是 当时 4.2 变为 3.9

其他 提前还款的记录就是已经提前还过的记录都需要记录上,然后想模拟的就随便加,看看模拟的这条记录可以省多少利息。大概就这样咯
tyrad
1 月 10 日
利率是否保留两位小数了?
比如公积金之前是 3.25*1.1(二套)是 3.575 ,而不是页面展示的 3.58...
wjs9092
1 月 12 日
@tyrad 利率是前端显示的时候保留两位小数了,实际计算的是还是按照 3.575 拿来计算的。这个我可以修复一下前端的显示

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1183844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX