2020年高教社杯全国大学生数学建模:中小微企业的信贷决策

C题 中小微企业的信贷决策

下面的代码仅供参考,最优代码和思路如愿付费可加我qq,文末有
在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷款,并可以对信誉高、信贷风险小的企业给予利率优惠。银行首先根据中小微企业的实力、信誉对其信贷风险做出评估,然后依据信贷风险等因素来确定是否放贷及贷款额度、利率和期限等信贷策略。
某银行对确定要放贷企业的贷款额度为10100万元;年利率为4%15%;贷款期限为1年。附件1~3分别给出了123家有信贷记录企业的相关数据、302家无信贷记录企业的相关数据和贷款利率与客户流失率关系的2019年统计数据。该银行请你们团队根据实际和附件中的数据信息,通过建立数学模型研究对中小微企业的信贷策略,主要解决下列问题:
(1) 对附件1中123家企业的信贷风险进行量化分析,给出该银行在年度信贷总额固定时对这些企业的信贷策略。

分析:根据123家有信贷记录企业的相关数据结合银行贷款年利率与客户流失率关系的2019年统计数据,对这123家企业进行训练,首先得构建用于训练的特征,特征来源为sheet2和sheet3,可参考的算法有,knn分类,逻辑回归、神经网络‘随机森林等’算法,具体代码我会之后给出,请持续关注我。

import warnings

from sklearn.model_selection import train_test_split

from C.buildData import train
from C.model_utils import build_model_etr, score_model, \
    write_mae, build_model_rf

warnings.filterwarnings('ignore')
from sklearn.metrics import accuracy_score

x, y = train()
x_train, x_val, y_train, y_val = train_test_split(x,y, train_size=.80)

# model_rf = build_model_rf(x_train, y_train)
# val_rf = model_rf.predict(x_val)
model_etr = build_model_etr(x_train, y_train)
# model_etr = save_load('', 'load')
val_etr = model_etr.predict(x_val)
proba_etr = model_etr.predict_proba(x_val)
print(proba_etr)
accuracy = round(accuracy_score(y_val, val_etr), 6)
print('etr测试集,准确率:', accuracy)
score_model(y_val, val_etr, model_etr, '验证集')
def build_tz():
    first_excel = '附件1:123家有信贷记录企业的相关数据.xlsx'
    # 进项发票特征构建方法
    data = pd.read_excel(first_excel,sheet_name=1,dtype=str)
    data['month'] = data['开票日期'].map(lambda x:datetime.strptime(x,'%Y-%m-%d %H:%M:%S').month)
    jinxiang = data.groupby(['企业代号','发票状态']).size()
    month_group = data.groupby(['企业代号','month'])
    month_size = month_group.size()
    month_avg_money = month_group.agg({'金额':sum})
    fapiao_month = pd.merge(month_size,month_avg_money,on='企业代号')
    month_avg_tax = month_group.agg({'税额':sum})
    fapiao_month = pd.merge(fapiao_month, month_avg_tax, on='企业代号')
    month_avg_tax_money = month_group.agg({'价税合计':sum})
    fapiao_month = pd.merge(fapiao_month, month_avg_tax_money, on='企业代号')
    company = data.groupby(['企业代号'])
    money = company.agg({'金额':sum})
    tax = company.agg({'税额':sum})
    fapiao_month = pd.merge(money, tax, on='企业代号')
    tax_money = company.agg({'价税合计':sum})
    fapiao_month = pd.merge(fapiao_month, tax_money, on='企业代号')
    fapiao_month.to_csv('property.csv')
    # 销项发票特征构建方法
    data = pd.read_excel(first_excel,sheet_name=2,dtype=str)
    data['month'] = data['开票日期'].map(lambda x:datetime.strptime(x,'%Y-%m-%d %H:%M:%S').month)
    jinxiang = data.groupby(['企业代号','发票状态']).size()
    month_group = data.groupby(['企业代号','month'])
    month_size = month_group.size()
    fapiao_month = pd.merge(jinxiang,fapiao_month,on='企业代号')
    fapiao_month = pd.merge(fapiao_month,month_size,on='企业代号')
    month_avg_money = month_group.agg({'金额':sum})
    fapiao_month = pd.merge(fapiao_month, month_avg_money, on='企业代号')
    month_avg_tax = month_group.agg({'税额':sum})
    fapiao_month = pd.merge(fapiao_month, month_avg_tax, on='企业代号')
    month_avg_tax_money = month_group.agg({'价税合计':sum})
    fapiao_month = pd.merge(fapiao_month, month_avg_tax_money, on='企业代号')
    company = data.groupby(['企业代号'])
    money = company.agg({'金额':sum})
    fapiao_month = pd.merge(fapiao_month, money, on='企业代号')
    tax = company.agg({'税额':sum})
    fapiao_month = pd.merge(fapiao_month, tax, on='企业代号')
    tax_money = company.agg({'价税合计':sum})
    fapiao_month = pd.merge(fapiao_month, tax_money, on='企业代号')
    fapiao_month.to_csv('property.csv')


build_tz()

求解每种风险的最大化收益:

def get_income():
    risk = 'risk.csv'
    risk_data = pd.read_csv(risk, sep='\t')
    income_a = []
    income_b = []
    income_c = []
    for index, one in risk_data.iterrows():
        percent = getattr(one, '贷款年利率')
        A_ls = getattr(one, '信誉评级A')
        B_ls = getattr(one, '信誉评级B')
        C_ls = getattr(one, '信誉评级C')
        for money in range(10, 101, 1):
            income_a.append([money, percent, A_ls, money * percent * (1-A_ls)])
            income_b.append([money, percent, B_ls, money * percent * (1-B_ls)])
            income_c.append([money, percent, C_ls, money * percent * (1-C_ls)])
    writeCsv(income_a, 'income_a.csv')
    writeCsv(income_b, 'income_b.csv')
    writeCsv(income_c, 'income_c.csv')

对123家公司的6种信誉进行评级,并对贷款年利率和信誉评级进行聚类,得到6个簇,分别对应到123家公司的6种信誉评级,具体代码如下:

def buildData():
    company123 = 'company123.csv'
    risk = 'risk.csv'
    risk_data = pd.read_csv(risk, sep='\t')
    company123_d = pd.read_csv(company123, sep='\t')
    for index, one in company123_d.iterrows():
        level = getattr(one, '信誉评级')
        isor = getattr(one, '是否违约')
        if level == 'A':
            one[5] = 1
        elif level == 'B' and isor == '否':
            one[5] = 2
        elif level == 'B' and isor == '是':
            one[5] = 3
        elif level == 'C' and isor == '否':
            one[5] = 4
        elif level == 'C' and isor == '是':
            one[5] = 5
        else:
            one[5] = 6

    kms1 = KMeans(n_clusters=6)

    risk_datay = kms1.fit_predict(risk_data.as_matrix())
    risk_data['类别'] = risk_datay.tolist()
    print(risk_datay.tolist())
    risk_data.to_csv('risk_data.csv', index=False)

    merge = pd.merge(company123_d, risk_data, on='类别')
    merge.to_csv('第一题结果.csv', index=False)

(2) 在问题1的基础上,对附件2中302家企业的信贷风险进行量化分析,并给出该银行在年度信贷总额为1亿元时对这些企业的信贷策略。

分析:对于无信贷记录的企业,只能从银行贷款年利率与客户流失率关系去评估,综合所有可能性去找到最佳的贷款年利率,适合的算法有聚类算法kmeans,将不同的贷款年利率产生的客户流失率进行聚类,找到最佳的簇。

(3) 企业的生产经营和经济效益可能会受到一些突发因素影响,而且突发因素往往对不同行业、不同类别的企业会有不同的影响。综合考虑附件2中各企业的信贷风险和可能的突发因素(例如:新冠病毒疫情)对各企业的影响,给出该银行在年度信贷总额为1亿元时的信贷调整策略。

分析:对于无信贷记录的企业,只能从银行贷款年利率与客户流失率关系去评估,信贷风险和可能的突发因素发生时,银行对企业的贷款利率应该下调,以面对不良率的提升。此题应该结合每个突发因素对不同行业的企业的影响,以新冠病毒疫情为例,主要影响的是旅游业、餐饮、影视等行业,对于这些行业的企业应该收紧房贷水平。量化的思路可以综合参考国民经济大数据。

具体代码和具体思路我会之后给出,请持续关注我,如果你有完整的处理好的特征数据请发给我,我给你写算法。
如需此题代码和思路,请加我球球,我不写论文,只写代码和思路
837216129

附件1 123家有信贷记录企业的相关数据
附件2 302家无信贷记录企业的相关数据
附件3 银行贷款年利率与客户流失率关系的2019年统计数据

附件中数据说明:
(1) 进项发票:企业进货(购买产品)时销售方为其开具的发票。
(2) 销项发票:企业销售产品时为购货方开具的发票。
(3) 有效发票:为正常的交易活动开具的发票。
(4) 作废发票:在为交易活动开具发票后,因故取消了该项交易,使发票作废。
(5) 负数发票:在为交易活动开具发票后,企业已入账记税,之后购方因故发生退货并退款,此时,需开具的负数发票。
(6) 信誉评级:银行内部根据企业的实际情况人工评定的,银行对信誉评级为D的企业原则上不予放贷。
(7) 客户流失率:因为贷款利率等因素银行失去潜在客户的比率。

  • 12
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值