LPR定价合适,还是固定利率合适,python帮你算一算

LPR利率

贷款市场报价利率(LPR)由各报价行于每月20日(遇节假日顺延),以0.05个百分点为步长,向全国银行间同业拆借中心提交报价,全国银行间同业拆借中心按去掉最高和最低报价后算术平均,向0.05%的整数倍就近取整计算得出LPR,于当日9时30分公布,公众可在全国银行间同业拆借中心和中国人民银行网站查询。目前,LPR包括1年期和5年期以上两个品种。

LPR浮动利率示例

如果您目前的个人房贷利率是在5年期贷款基准利率上打9折,那么按照目前5年期贷款基准利率计算,您的实际执行利率水平为4.41%(=4.9%×0.9)。根据人民银行〔2019〕30号公告,个人房贷转换前后利率水平保持不变。
(1)如果您选择转为固定利率,那么您的个人房贷在整个合同剩余期限内,都将执行4.41%这个利率。
(2)如果您选择转为参考LPR定价,您的个人房贷利率水平将按照“5年期以上LPR+(-0.39%)”确定。其中,-0.39是固定加点点差,根据当前实际执行利率(4.41%)与2019年12月公布的5年期以上LPR(4.8%)之间的差确定。转换后到第一个重定价日前,您的房贷利率还是4.41%,但计算方式变成了“LPR4.8%+(-0.39%)”;从第一个重定价日起,您的房贷利率就会变成“当时最新的5年期LPR+(-0.39%)”;以后每个重定价日都以此类推。

贷款利息计算公式

1、等额本息法:计算公式月还款额=本金*月利率*[(1+月利率)^n/[(1+月利率)^n-1];式中n表示贷款月数,^n表示n次方,如^240,表示240次方(贷款20年、240个月),月利率=年利率/12;总利息=月还款额*贷款月数-本金

2、等额本金法:计算公式:月还款额=本金/n+剩余本金*月利率;总利息=本金*月利率*(贷款月数/2+0.5)。

python实现

前提条件:贷款100w,贷款周期:30年,基准利率4.9%,LPR基准使用2019年12月公布的4.8%

计算不同折扣利率(上浮下浮利率情况),未来LPR利率情况下对贷款利率和月供影响

结果如下:

LPR定价合适,还是固定利率合适,python帮你算一算_第1张图片

分析:截图是贷款100w,30年,打85折对比情况,如果贷款调整成LPR浮动利率,每年1月1日为更新日,2020年5月20日更新的5年期LPR利率是4.65%若该利率不变(即到12月也是该数值),则明年施行此利率,调整LPR浮动利率每月少缴月供87元,若LPR一直保持不变(当然不可能的)30年少缴3w左右。

中短期来看利率是下行的,如果这个下行时间持续比较长,那么会缓解贷款压力,但是利率是均值回复的,若有几年利率上涨会带来月供压力的风险,因为利率变更选择只有一次。所以如果是保守者就选择固定利率。

代码:

import numpy as np
import pandas as pd


def repayment_fun(loan_amount, current_benchmark_interest_rate, N=20):
    """
    等额本息计算每月偿还金额,和总金额
    :param loan_amount:贷款总金额
    :param current_benchmark_interest_rate:当前基准利率
    :param N:贷款周期
    :return:
    """
    month_rate = current_benchmark_interest_rate / 12
    repayment = loan_amount * month_rate * (1 + month_rate) ** (N * 12) / (
            (1 + month_rate) ** (N * 12) - 1)
    return repayment, repayment * N * 12


def style_apply(series, colors, back_ground=''):
    """
    :param series: 传过来的数据是DataFramt中的一列   类型为pd.Series
    :param colors: 内容是字典  其中key 为标题名   value 为颜色
    :param back_ground: 北京颜色
    :return:
    """
    series_name = series.name[0]
    a = list()
    # 为了给每一个单元格上色
    for col in series:
        # 其中 col 为pd.DataFrame 中的 一个小单元格   大家可以根据不同需求为单元格设置不同的颜色
        # 获取什么一级标题获取什么颜色
        if series_name in colors:
            for title_name in colors:
                if title_name == series_name:
                    back_ground = 'background-color: ' + colors[title_name]
                    # '; border-left-color: #080808'
        a.append(back_ground)
    return a


# 基准利率
benchmark_interest_rate = 4.9 * 0.01
# 折扣
discount = np.arange(0.7, 1.25, 0.05)
# LPR未来利率利率
lpr = np.arange(4, 6, 0.05) * 0.01
# 2019年12月LPR利率
base_lpr = 4.8 * 0.01
# 加点
diff = base_lpr - benchmark_interest_rate * discount
# 贷款
loan = 100 * 10000
#  期限
term = 30
data = []
for discount_item in discount:
    diff = base_lpr - benchmark_interest_rate * discount_item
    discount_rate = discount_item * benchmark_interest_rate
    print(loan, discount_rate, term)
    discount_repayment, discount_total_amount = repayment_fun(loan, discount_rate, term)
    for lpr_item in lpr:
        lpr_rate = lpr_item - diff
        lpr_repayment, lpr_total_amount = repayment_fun(loan, lpr_rate, term)
        data.append(
            {"LPR利率": lpr_item, "折扣利率": discount_item, "浮动利率月供": round(lpr_repayment,2), "固定利率月供": round(discount_repayment, 2),
             "月供差": round((lpr_repayment - discount_repayment), 2),
             "累计少缴金额": round(lpr_total_amount - discount_total_amount, 2)})
output_data = pd.DataFrame(data)
output_data = output_data.style.background_gradient(cmap='gray_r')
output_data.to_excel('lpr.xlsx', index=None)

 

你可能感兴趣的:(金融,python)