分期与贷款真实成本计算
这个技能做什么、不做什么
- 做:把用户手上的借款数字算清楚——
- 分期(信用卡账单/消费分期、花呗、白条等):「每期 0.6% 手续费」到底相当于多少年化;
- 房贷提前还款:还一笔之后少付多少利息、月供和期数怎么变、缩短年限和减少月供差多少;
- 多方案比较:几种借法摆在一起,按真实年化从低到高排;
- 还款计划:导出每一期还多少、本金多少、利息/手续费多少的 CSV。
- 不做:不推荐、不评价任何贷款产品、平台、银行或理财产品;不判断用户能不能借到、额度多少、该不该借;不查任何利率或行情(零联网)。用户问「哪家分期划算」「现在该不该提前还」「买什么理财」时,说明这不在本技能范围内,把话题拉回「把你拿到的具体数字给我,我帮你算真实年化」。
- 所有结果只来自用户给的数字。缺数字就问,不替用户假设费率或利率。
使用流程
- 问清三样东西:借了多少(到手多少)、分几期、每期还多少(或每期费率 / 总手续费 / 合同年利率)。手续费是每期收、首期一次收,还是放款时先扣?有没有额外服务费?用户只说「费率 0.6%」时,确认是每期费率还是年费率。
- 分期真实年化:
`` python {baseDir}/scripts/calc.py installment --principal 12000 --periods 12 --fee-rate 0.006 ``
三选一给费用:--fee-rate(每期费率,小数)/ --total-fee(总手续费,元)/ --payment(每期还款额,元)。 常见变体:--fee-timing first(手续费首期一次收齐)、--fee-timing deduct(放款时先扣)、--first-extra-fee 50(首期额外多收)、--upfront-fee 200(放款时另扣服务费)。
- 房贷提前还款:
`` python {baseDir}/scripts/calc.py mortgage-prepay --balance 800000 --rate 0.031 --months 240 --prepay 200000 --method equal_payment --mode shorten ``
--method equal_payment(等额本息)/ equal_principal(等额本金);--mode shorten(缩短年限)/ reduce(减少月供)。可选 --penalty 违约金、--invest-yield 0.02(用户自己给的假设收益率,只做终值算术对比)、--csv plan.csv(导出前后两份计划)。两种处理方式都值得各跑一次给用户对照。
- 多方案比较:把方案写进 JSON(模板见
assets/plans.example.json,支持installment分期 /loan按余额计息贷款,含等额本息、等额本金、先息后本、日利率、放款先扣费 /cashflows自填每期还款),然后:
`` python {baseDir}/scripts/calc.py compare --plans plans.json ``
- 导出还款计划:
`` python {baseDir}/scripts/calc.py schedule --principal 12000 --periods 12 --fee-rate 0.006 --csv schedule.csv python {baseDir}/scripts/calc.py schedule --type loan --principal 1000000 --periods 360 --rate 0.049 --method equal_principal --csv schedule.csv python {baseDir}/scripts/calc.py schedule --plan-file plans.json --name "A 分期每期0.6%" --csv schedule.csv ``
- 输出格式:每个子命令默认打印 Markdown;加
--out report.md同时写出report.md与report.json;加--format json直接打印 JSON。把 Markdown 原样给用户看,再用一两句话点出最关键的那个数。
更多示例输入见 assets/installment.example.json、assets/mortgage.example.json。
口径(脚本实现,见 scripts/calc.py)
| 指标 | 定义 | |---|---| | 每期 IRR | 现金流「到手金额为正、每期还款为负」的内部收益率,牛顿法 + 二分兜底,纯标准库 | | APR(真实年化,单利口径) | 每期 IRR × 每年期数;即监管要求明示的「年化利率」口径 | | EAR(实际年利率,复利口径) | (1 + 每期 IRR)^每年期数 − 1 | | 名义年费率 | 总费用 ÷ 本金 ÷ 期数 × 12,用来对照「为什么翻倍」 | | 金额 | 每期本金、利息、手续费四舍五入到分,零头放最后一期 | | 缩短年限 | 等额本息保持原月供反推期数(向上取整)再按新期数重排;等额本金保持原每月还本额反推期数 | | 还贷 vs 不还 | 不还:提前还款金额(含违约金)按假设年化、按月复利放到原到期日;还:每月少还的钱逐月按同一收益率放到原到期日;比较两者终值。盈亏平衡收益率 = 这笔「提前还款」现金流的 IRR,理论上等于房贷利率 |
已核对的案例(数字可复现):
- 12 000 元分 12 期、每期 0.6%:每期还 1 072,总手续费 864;每期 IRR 1.0862%,APR 13.03%,EAR 13.84%,名义 7.20%,是名义的 1.81 倍(经验式 7.2% × 24/13 = 13.29%)。另用独立二分法复算年金现值,得 13.0342%,一致。
- 同上手续费首期收齐:APR 13.86%;放款先扣:APR 14.02%;首期多收 50 元:APR 13.82%。
- 100 万元、30 年、4.9% 等额本息:月供 5 307.27(与常见房贷计算器一致),总利息 910 615.12(逐期取整到分);等额本金首月 6 861.11;两者 APR 反算均为 4.90%。
- 80 万、3.1%、剩 240 期、等额本息提前还 20 万:缩短年限 240→165 期,少付利息 136 768.86;减少月供 4 476.94→3 357.70,少付利息 68 615.48;盈亏平衡收益率 3.10%(= 房贷利率)。
报告怎么说话
- 第一句就给结论数字:「真实年化 13.03%,不是 7.2%」「提前还 20 万少付利息 13.68 万」。
- 解释翻倍原因时用用户自己的数:手续费一直按最初本金收,但本金在一期期减少,平均只占用了约一半的钱。
- 比较方案只说排序和差距,不说「选 X」;最后一句把决定权交还用户:「按真实年化,A 比 B 低 x 个百分点。」
- 提前还款的「还贷 vs 不还」只报两个终值和盈亏平衡收益率,并说明收益率是用户给的假设、真实收益不确定、提前还掉的钱取不回来。不提任何具体理财、存款、基金名称。
- 不用「坑」「割韭菜」这类形容词,不评价机构动机。
边界
- 不推荐、不评价任何贷款/分期/理财产品、平台或机构,不做授信或还款能力评估,不给「借不借、还不还」的建议——只做算术。
- 所有利率、费率、金额都来自用户;脚本不联网,不内置任何机构的费率表。
- 默认按月分期(每年 12 期),其他周期用
--periods-per-year;不处理按日计息的精确天数(日利率按 × 360 折年并在报告里注明)、免息期、逾期罚息、最低还款、复杂的浮动利率重定价。 - 银行对零头、提前还款后期数取整、违约金的规则各不相同,结果与银行出具的新还款计划可能差几元到几十元,以银行为准。
- 金额单位为元;费率与利率一律写小数(0.6% 写 0.006)。输入不合理(还款总额小于本金、提前还款大于剩余本金等)时脚本报错退出,把错误原样告诉用户并请他核对。