授信、存款与利息 — 银行数字的起点
一句话总结
银行的核心产品是吸收资金的存款业务和发放资金的贷款业务,两者之间的利差是银行的主要收入——因此,利息如何计算、何时收不回来,决定了银行系统的骨架。
为什么需要这些知识
进入银行的工程师第一周会听到这样的话:“贷款分户账中各期利息与渠道界面相差 1 韩元”“这笔贷款是等额本金,所以第一个月还款额最大”“逾期超过 90 天的贷款会降为次级,拨备会猛增”。这些全是产品知识,而不是技术知识。可是如果听不懂这些话,就既无法记录需求,也无法区分缺陷和正常行为。
存款业务是银行从客户那里吸收资金的一方,包括活期存款(可自由存取)、定期存款(锁定到期,利息更高)和零存整取(每月存入)。贷款业务是银行把钱借给客户的一方,包括信用贷款、抵押贷款(住房、全税保证金)、企业流动资金贷款等。从银行的角度看,存款是要偿还的钱,所以是负债;贷款是要收回的钱,所以是资产。这个方向一开始最容易混淆。
还款方式决定数字
偿还贷款的方式大致有三种。
| 还款方式 | 什么不变、什么变化 |
|---|---|
| 等额本息 | 每月还款额(本金+利息)相同。初期利息占比大,越往后本金占比越大。 |
| 等额本金 | 每月偿还的本金相同。利息按余额计算,逐月减少,因此还款额越来越小。 |
| 到期一次还本 | 期间只付利息,到期一次性偿还本金。 |
在金额、利率、期限相同时,总利息以等额本金最少,等额本息次之,到期一次还本最多。因为本金还得越快,计息余额就减少得越快。不过等额本金第一个月的负担最大。客户选择哪一种是现金流的问题,而系统必须准确生成两种方式的还款计划。
等额本息的月还款额用一个公式就能算出。设本金为 P、月利率为 r、月数为 n,则为 P × r ÷ (1 − (1 + r)^−n)。每月利息等于上期余额乘以月利率,还款额减去利息后的剩余部分就是当月偿还的本金。最后一个月累积了舍入误差,所以按偿还全部剩余本金来调平。
利息计算有惯例
比公式更让实际工作变难的是惯例:月利率是直接使用年利率除以 12 的值,还是截到小数点后第几位;按日计息时除以 365,还是闰年除以 366;不足 1 韩元的部分是四舍五入还是舍去,是每期舍去还是在合计时舍去一次。这些规则写在公司的产品定义书中,规则不同,数字就会相差 1 韩元。而这 1 韩元在分户账核对中一定会被发现。
存款利息伴随着税金。利息所得要预扣 14% 的所得税和相当于其 10% 的 1.4% 地方所得税。客户拿到的是税后利息,银行把代扣的税款缴给国家。税金按每笔分别计算,并遵循舍去规则(大致舍去不足 10 韩元的部分)。
逾期既是利息问题,也是分类问题
过了还款日就开始逾期。逾期利息按约定利率加上逾期加息后的利率计算,加息上限由制度规定(在韩国大致为 3 个百分点左右)。但逾期并不止于利息问题,还会带来资产质量分类。监管规定要求把贷款分为正常、关注、次级、可疑、损失五级,逾期期限是代表性的标准。大致不满 1 个月为正常,1–3 个月为关注,3 个月以上为次级及以下。
分类之所以重要,是因为拨备。银行要为可能收不回的部分,按分类计提不低于规定比例的贷款损失准备金,比例大约是正常 1% 左右、次级 20% 左右、损失 100%(因个人与企业、制度而异)。拨备是费用,会直接反映到损益中。一笔贷款从关注降为次级,那个季度的利润就会相应减少。所以分类批处理是月末、季末最敏感的批处理,逾期天数算错一天,监管报告就会出错。
把利息和还款写成代码时必须确定的事项
计算还款计划的代码很短,但一旦算错,向客户收取的金额就会不同。 所以开始之前必须确定的事项是固定的。
先确定计日惯例。 同样是年利率 5%,实际/365、实际/360、30/360 会得出不同的值。它必须写在产品定义书中,代码中要把这个惯例作为值带着走。如果写死在代码里,新产品一来必然出事故。
确定舍入的位数和方向。 是按韩元舍去还是四舍五入,是每期处理还是最后集中处理,总额会相差几十韩元。看起来很小,却是客户会拿计算器算一遍再来咨询的地方。最常见的做法是在最后一期调平余额。
确定节假日处理规则。 还款日是节假日时,是提前还是顺延,以及此时是否重新计算利息,做法各不相同。日历因国家而异,每年都会变化,所以要作为数据管理。
提前还款要重新计算剩余全部期次。 偿还一部分后,之后各期的本金和利息都会变化;根据还款方式不同,是减少每期金额还是缩短期限也不同。选哪一种是客户选择的项目,所以必须记录在合同中。
逾期是单独的利率和单独的状态。 逾期利息按不同于正常利息的利率计算,经过一定期限后资产分类会改变。分类一变就会影响会计和监管报告,所以不要把利息计算和分类判定混在同一段代码里。
所有计算都要传入基准日。 在函数内部获取今天的日期,就无法复现过去的时点。无法复现,就无法回答客户的咨询。
实际工作中真正重要的事
第一,不要把规则埋在代码里,要作为数据存放。 舍入方式、计日基准、逾期加息因产品而异,制度一变也会跟着变。应当放在产品定义表中,让计算程序去读取。
第二,保存还款计划,并重新计算进行核对。 放款时生成的还款计划与现在重新计算的不同,就说明其中一个是错的;差异从哪一期开始,就指出了原因。
第三,逾期天数是基准日的函数。 今天运行就以今天为准,月末批处理就以月末为准。不把基准日作为参数接收的逾期计算程序,每次重新运行都会给出不同的答案。
在下一个实验中,你将用这些规则亲自计算还款计划,并把存款利息与税金、逾期利息乃至拨备都用数字算出来。