2020年国赛高教杯数学建模C题中小微企业的信贷决策解题全过程文档及程序

2020年国赛高教杯数学建模

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

原题再现

  在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷款,并可以对信誉高、信贷风险小的企业给予利率优惠。银行首先根据中小微企业的实力、信誉对其信贷风险做出评估,然后依据信贷风险等因素来确定是否放贷及贷款额度、利率和期限等信贷策略。
  某银行对确定要放贷企业的贷款额度为10至100万元;年利率为4%至15%;贷款期限为1年。附件1~3分别给出了123家有信贷记录企业的相关数据、302家无信贷记录企业的相关数据和贷款利率与客户流失率关系的2019年统计数据。该银行请你们团队根据实际和附件中的数据信息,通过建立数学模型研究对中小微企业的信贷策略,主要解决下列问题:
  (1) 对附件1中123家企业的信贷风险进行量化分析,给出该银行在年度信贷总额固定时对这些企业的信贷策略。
  (2) 在问题1的基础上,对附件2中302家企业的信贷风险进行量化分析,并给出该银行在年度信贷总额为1亿元时对这些企业的信贷策略。
  (3) 企业的生产经营和经济效益可能会受到一些突发因素影响,而且突发因素往往对不同行业、不同类别的企业会有不同的影响。综合考虑附件2中各企业的信贷风险和可能的突发因素(例如:新冠病毒疫情)对各企业的影响,给出该银行在年度信贷总额为1亿元时的信贷调整策略。

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

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

整体求解过程概述(摘要)

  中小微企业信贷风险是商业银行投资中重大的风险。信贷风险产生的根源是借贷双方信息的不对称,建立信贷风险量化模型是提高信息对称度的重要手段。本文建立了信贷决策模型,通过朴素贝叶斯算法及多元因子分析,对各企业信贷风险进行量化,给出贷款额度、利率等信贷策略。
  针对问题一,首先对附件1中的数据进行处理,再对信誉等级、盈利额以及营运能力等指标进行量化分析,建立朴素贝叶斯分类模型。根据不同企业的信誉等级、盈利额以及营运能力,将贷款额度进行量化分配得到信贷分配策略。
  针对问题二,我们将问题一中求得的数据进行拟合,来预测附件二中无信贷记录企业的贷款额度和年利率。基于问题一的朴素贝叶斯模型,将企业的贷款额度根据盈利额的占比进行量化分配,得到信贷分配策略。
  针对问题三,对附件2中的企业依据关键词及税率进行行业划分。分别从多方面综合考虑新型冠状病毒对各个行业的影响,通过SPSS软件进行多元因子分析,结果显示,医药医疗业、互联网行业经济迅速得到增长,但其余行业受疫情影响较严重。最终,根据附件二中302家企业所归行业类别及该企业经济涨跌情况,给出合理化贷款分类策略调整。最后,引用精确率、召回率和得分数来验证模型的准确性。

模型假设:

  1. 假设该银行为一般商业银行,以获取盈利为目的;
  2. 忽略道德风险对银行信贷业务的影响;
  3. 假设发票中的税额全部按时缴纳;
  4. 假设问题一、二中企业未受到突发因素的影响;
  5. 假设不考虑费用支出等对企业盈利的影响。

问题分析:

  问题一的分析
  我们运用机器学习算法对附件1中数据进行量化分析(量化分析可以帮助我们更加直观的衡量风险和收益)。问题中,首先将企业贷款信誉等级分为6个级别,根据附表中的数据,筛选出有效发票的数据之后,计算该123家有信贷记录企业的公司的盈利额。其次,由盈利企业的盈利情况、企业贷款信誉等级和企业开票数量,使用分类算法中的朴素贝叶斯算法编程,分析得出该银行对这些企业在年度信贷总额固定时的信贷策略。
  问题二的分析
  对于问题二,运用问题一中的模型对附件2的数据进行量化分析。用附件1中的企业盈利额和企业开票数量分别与银行贷款额度、年利率作拟合曲线图,分析各个特征条件之间的相关性。因附件2中的企业无信誉等级,我们只能通过企业的盈利亏损情况和企业开票数量,用机器学习算法进行数据整合、分析和计算,来给出银行对其贷款额度的分配策略。
  问题三的分析
  本题对附件2中的企业依据关键词及税率进行行业划分。我们分别从房地产业、制造业、基础建设业、服务业、旅游业、医药医疗业、互联网业等多个行业综合考虑新型冠状病毒疫情的影响,通过SPSS软件做多元因子分析,得出,医药医疗业、互联网行业经济迅速得到增长,其他行业受疫情影响,收到严重打击。最终,根据附件二中321家企业所归行业类别及该企业经济涨跌情况,给出合理化贷款分类策略调整。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:(代码和文档not free)

#导入excel文件处理库
import openpyxl
#读入企业信贷记录相关数据
wb = openpyxl.load_workbook('附件1:123家有信贷记录企业的相关数据.xlsx')
#选择df1,企业信息
df1 = wb['企业信息']
#定义存储公司名称列表
name_list = []
#循环读入公司名称
for row in df1.iter_rows(min_row=2, max_row=124,min_col=1, max_col=1):
 for cell in row:
 #遍历读取公司名称存入列表中
 name_list.append(cell.value)
#定义存储信誉评级、是否违约列表
leavel_list = []
weiyue_list = []
#循环读入信誉评级与是否违约
for row in df1.iter_rows(min_row=2, max_row=124,min_col=3, max_col=4):
 #展示存储每一行数据
 tmp = []
 #遍历读取数据
 for cell in row:
 tmp.append(cell.value)
 #取第一项数据即为信誉评级
 leavel_list.append(tmp[0])
 #取第二项数据即为是否违约
 weiyue_list.append(tmp[-1])
#将信誉评级与是否违约合并为一个等级
cls = ['leavel_list[i]'+'weiyue_list[i]' for i in range(len(leavel_list))]
#标准的公司分类为6类
cls_normal = ['A否','B是','B否','C是','C否','D是']
#定义存储不同分类的所属公司
cls_gs = []
#遍历获取不同类别的所属公司
for item in cls_normal:
 tmp = []
 for i in range(len(cls)):
 #若分类存在标准分类中,则提取公司名称
 if item == cls[i]:
 tmp.append(name_list[i])
 #存储类别与所属的公司
 cls_gs.append([item,tmp])
 
'''
分类情况
['A否', ['E1', 'E2', 'E6', 'E7', 'E8', 'E9', 'E13', 'E15', 'E16', 'E17', 'E18', 'E19', 'E22', 'E24', 
'E26', 'E27', 'E31', 'E42', 'E48', 'E54', 'E59', 'E64', 'E81', 'E84', 'E88', 'E89', 'E91']]
['B是', ['E45']]
['B否', ['E5', 'E10', 'E12', 'E20', 'E21', 'E23', 'E28', 'E30', 'E32', 'E33', 'E34', 'E35', 'E37', 
'E38', 'E43', 'E51', 'E57', 'E58', 'E60', 'E61', 'E62', 'E63', 'E65', 'E66', 'E67', 'E70', 'E71'

'E74', 'E76', 'E79', 'E83', 'E85', 'E93', 'E95', 'E97', 'E98', 'E106']]
['C是', ['E29', 'E87']]
['C否', ['E3', 'E4', 'E11', 'E14', 'E25', 'E39', 'E40', 'E41', 'E44', 'E46', 'E47', 'E49', 'E50', 
'E53', 'E55', 'E56', 'E68', 'E69', 'E72', 'E73', 'E75', 'E77', 'E78', 'E80', 'E86', 'E90', 'E92', 
'E94', 'E96', 'E104', 'E105', 'E110']]
['D是', ['E36', 'E52', 'E82', 'E99', 'E100', 'E101', 'E102', 'E103', 'E107', 'E108', 'E109', 
'E111', 'E112', 'E113', 'E114', 'E115', 'E116', 'E117', 'E118', 'E119', 'E120', 'E121', 
'E122', 'E123']]
'''
#导入pandas库读取excel
import pandas as pd
#定义函数用于获取行标,返回被查找值的第一个行号
def find_row(num_value,file_name):
 #使用read_excel函数读取文件
 demo_df = pd.read_excel(file_name)
 #遍历索引
 for indexs in demo_df.index:
 for i in range(len(demo_df.loc[indexs].values)):
 #如果行中的值与你所查询值相等则返回该值对应的行号
 if (str(demo_df.loc[indexs].values[i]) == num_value):
 row = str(indexs+2).rstrip('L')
 return row
#提取出进项、销项的数据到单独的excel用于提取行号
filejin_name = '进项发票信息.xlsx'
filechu_name = '销项发票信息.xlsx'
#定义存储进项、销项行号的列表
jin_point = []
chu_point = []
#遍历公司名称,用于获取此公司对应的行号,用于读取价税合计信息
for item in name_list:
 print(name_list.index(item))
 #将行号追加到列表中
 jin_point.append(find_row(item,filejin_name))
 chu_point.append(find_row(item,filechu_name))
#获取附件1中sheet2 进项发票信息
sheet2 = wb['进项发票信息']
#获取附件2中sheet3 销项发票信息
sheet3 = wb['销项发票信息']
#定义函数,用于获取有效发票的税额合计
def getMoney(min_row,max_row):
 #定义存储税额合计的列表
 money = []
 #遍历读取某一个公司的税额合计
 for row in sheet2.iter_rows(min_row=min_row, max_row=max_row,min_col=7, 
max_col=8):
 tmp = []
 for cell in row:
 tmp.append(cell.value)
 #如果为有效发票,则存储此项对应的税额合计
 if tmp[1] == '有效发票':
 money.append(tmp[0])
 #返回此公司的均值
 return round(sum(money)/len(money),2)
#定义存储进项税额合计的列表
In_name = []
#遍历获取进项税额合计
for i in range(len(jin_point)):
 try:
 #存储税额合计的均值
 In_name.append(getMoney(jin_point[i],jin_point[i+1]))
 except:
 pass
 
#定义存储销项税额合计的列表
chu_mean = []
#遍历获取销项税额合计
for i in range(len(chu_point)):
 try:
 #存储税额合计的均值
 chu_mean.append(getMoney(chu_point[i],chu_point[i+1]))
 except:
 pass
print(In_name,chu_mean)
#计算盈亏情况,盈亏情况为销项平均值 - 进项平均值
profit_loss = chu_mean - In_name
print(profit_loss)
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35284.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Win10电脑开机PIN码怎么取消?

有的用户稀里糊涂的设置了PIN码之后,在开机时发现多了个PIN码,但又不知道电脑PIN码是什么意思,也不清楚开机PIN码怎么取消。您可以通过阅读以下内容,以了解什么是PIN以及如何取消PIN码。 PIN码是一种快捷登录密码方式,…

lesson 12 Zigbee绑定通信

目录 Zigbee绑定通信 通信原理 实验过程 实现步骤 实验现象 实验分析 Zigbee绑定通信 通信原理 1、Zigbee一共有五种通信方式:单播、广播、组播、MAC、广播 2、绑定是Zigbee的一种基本通信方式,具体绑定通信又分为三种模式,模式大同…

java 计算网段范围 分析网段包含关系

目录 一、网段范围 二、思路说明 三、代码 1、将一个ip转为数字 2、转换子网掩码(255.255.255.0 转为 24) 3、根据 ip 与 掩码 计算最大值和最小值 4、测试 5、完整代码 四、难点讲解 1、转换子网掩码, 例:255.255.25…

数据总线学习

为啥要数据总线 使用服务化方式发布,业务端和中间件完全解耦合。一处生产,处处消费设计理念。提供用户可定制的托管化通用消费方案(如同步mysql到缓存,同步mysql到es,消费mysql到大数据等托管服务) 特性 …

RabbitMQ系列(18)--RabbitMQ基于插件实现延迟队列

1、前往RabbitMQ官网下载往RabbitMQ添加延迟消息的插件 RabbitMQ官网下载插件的网址:https://www.rabbitmq.com/community-plugins.html 2、下载rabbitmq_delayer_message_exchange插件(注:RabbitMQ是什么版本的,下载的插件就得是…

【UE5 Cesium】12-Cesium for Unreal 去除左下角的icon

问题 在视口左下角的icon如何去除? 解决方法 打开“CesiumCreditSystemBP” 将“Credit Widget Class”一项中的“ScreenCredit”替换为“ScreenCreditWidget” 编译之后icon就不显示了。

2023年5月PETS5(WSK)考试经验分享

由于本人明年打算出国联培的缘故,CSC国家留学基金委需要申请人的语言成绩达到一定的要求 英语(PETS5):笔试总分55分(含)以上,其中听力部分18分(含)以上,口试…

2023最新AI创作系统/ChatGPT商业运营版网站程序源码+支持GPT4+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

2023最新AI创作系统/ChatGPT商业运营版网站程序源码支持ai绘画支持GPT4.0实时语音识别输入文章资讯发布功能用户会员套餐免费更新版本 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 1、提问:程序已经支持G…

“生鲜蔬”APP的设计与实现

1.引言 在这个科技与网络齐头并进的时代,外卖服务正在飞速发展,人们对外卖APP系统功能需求越来越多,开发APP的人员对自己的要求也要越来越高,要从所做APP外卖系统所实现的功能和用户的需求来对系统进行设计,还需要与当…

2023年船舶、海洋与海事工程国际会议(NAOME 2023) | Ei Scopus双检索

会议简介 Brief Introduction 2023年船舶、海洋与海事工程国际会议(NAOME 2023) 会议时间:2023年10月20日-22日 召开地点:中国镇江 大会官网:NAOME 2023-2023 International Conference on Naval Architecture and Ocean & Marine Engine…

腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库

随着数字化进程不断深入,数据呈大规模、多样性的爆发式增长。为满足更多样、更复杂的业务数据处理分析的诉求,湖仓一体应运而生。在Gartner发布的《Hype Cycle for Data Management 2021》中,湖仓一体(Lake house)首次…

ModaHub魔搭社区:基于阿里云 ACK 搭建开源向量数据库 Milvus

目录 一、准备资源 二、集群创建: 本集群基于Terway网络构建 二、连接刚刚创建的ACK集群 三、部署Milvus数据库 四、优化Milvus配置 简介: 生成式 AI(Generative AI)引爆了向量数据库(Vector Database&#xff0…

【链表OJ】删除链表中重复的结点

⭐️ 往期链表相关OJ 💫链接1:链表分割 💫链接2:链表中倒数第k个结点(快慢指针问题) 💫链接3:leetcode 876.链表的中间结点(快慢指针问题) 💫链接4:leetcode 206.反转链表 &#x1…

【数据结构与算法】内排序算法比较(C\C++)

实践要求 1. 问题描述 各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间,试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。 2. 基本要求 对以下10种常用的内部排序算法进行比较…

【mysql实践】如何查看阿里云RDS的MySQL库中的binlog日志

背景: 工作中我们为了查看MySQL中数据修改的历史记录时,会通过查看binlog日志。但由于binlog日志是二进制文件,需要解析之后,才能用文本查看工具打开。这次笔者使用flink进行实时统计时就多次遇到了这个问题。经常看笔者最近博客…

redhat6安装mysql8.0.33

1、下载mysql 官网地址:https://downloads.mysql.com/archives/community/ 下载步骤: 过滤操作系统版本 下载后,上传到服务器Downloads目录 2、安装mysql8 解压压缩包 tar -xvf mysql-8.0.31-1.el9.x86_64.rpm-bundle.tar [rootrhel64 …

山海鲸Cesium:帮你用更简单的方式升级视效

CesiumJS作为绝大多数人都在用的开源地球可视化引擎,视觉效果并不拔尖,这让很多giser都想着有一天升级一下视效,从众多平庸的项目中脱颖而出。然而,对于一些使用Cesium的项目来说,要想达到Cesium for unreal的视觉效果…

Jetson Orin Nano Developer Kit

Jetson Orin Nano Developer Kit包括Jetson Orin Nano 8GB模块,该模块具有NVIDIA安培GPU(具有1024个CUDA内核和32个第三代张量内核)和6核ARM CPU,能够运行多个并发AI应用程序管道并提供高推断性能。 开发套件载体板支持所有Jetson Orin Nano和Orin NX模块…

多层感知机与深度学习算法概述

多层感知机与深度学习算法概述 读研之前那会儿我们曾纠结于机器学习、深度学习、神经网络这些概念的异同。现在看来深度学习这一算法竟然容易让人和他的爸爸机器学习搞混…可见深度学习技术的影响力之大。深度学习,作为机器学习家族中目前最有价值的一种算法&#…

Java安全——安全提供者

Java安全 安全提供者 在Java中,安全提供者(Security Provider)是一种实现了特定安全服务的软件模块。它提供了一系列的加密、解密、签名、验证和随机数生成等安全功能。安全提供者基础设施在Java中的作用是为开发人员提供一种扩展和替换标准…