本文共 6129 字,大约阅读时间需要 20 分钟。
C题 中小微企业的信贷决策
下面的代码仅供参考,最优代码和思路如愿付费可加我qq,文末有
在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷款,并可以对信誉高、信贷风险小的企业给予利率优惠。银行首先根据中小微企业的实力、信誉对其信贷风险做出评估,然后依据信贷风险等因素来确定是否放贷及贷款额度、利率和期限等信贷策略。 某银行对确定要放贷企业的贷款额度为10100万元;年利率为4%15%;贷款期限为1年。附件1~3分别给出了123家有信贷记录企业的相关数据、302家无信贷记录企业的相关数据和贷款利率与客户流失率关系的2019年统计数据。该银行请你们团队根据实际和附件中的数据信息,通过建立数学模型研究对中小微企业的信贷策略,主要解决下列问题: (1) 对附件1中123家企业的信贷风险进行量化分析,给出该银行在年度信贷总额固定时对这些企业的信贷策略。分析:根据123家有信贷记录企业的相关数据结合银行贷款年利率与客户流失率关系的2019年统计数据,对这123家企业进行训练,首先得构建用于训练的特征,特征来源为sheet2和sheet3,可参考的算法有,knn分类,逻辑回归、神经网络‘随机森林等’算法,具体代码我会之后给出,请持续关注我。
import warningsfrom sklearn.model_selection import train_test_splitfrom C.buildData import trainfrom C.model_utils import build_model_etr, score_model, \ write_mae, build_model_rfwarnings.filterwarnings('ignore')from sklearn.metrics import accuracy_scorex, 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) 客户流失率:因为贷款利率等因素银行失去潜在客户的比率。转载地址:https://data-mining.blog.csdn.net/article/details/108544595 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!