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

news2024/12/23 6:53:48

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名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MAYA过山车动画

创建骨骼 把小车模型放入到控制器里 有点问题,先建立一个组在试,没问题了

docker框架02docker的安装

01.这次的docker是在centos版本下的Linux系统中安装的。 02.输入命令 01.先去卸载就得版本 02.安装工具包,和设置镜像仓库 03.由于网络的问题,访问国内的阿里云镜像 修改: 04.更新索引和安装社区版的docker 05.启动docker 06.用命令d…

nginx开启http2导致的服务验证码不可用问题

问题描述: 新搭建了一套开源的系统。通过nginx做了https反向代理后无法显示验证码。 具体报错: Uncaught TypeError: Cannot read properties of null (reading ‘property’) 点击报错后跳转到方法: xhr.getAllResponseHeaders() 问题就出在这个方法&…

leetcode 206.反转链表

⭐️ 往期相关文章 ✨链接:数据结构-手撕单链表代码详解。 ⭐️ 题目描述 🌟 leetcode链接:反转链表 1️⃣ 代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…

html中input属性设置(合集)

html中input标签是常见的一个标签&#xff0c;下面由学习啦小编为大家整理了html中的input属性设置的相关知识&#xff0c;希望对大家有帮助! html中input属性设置总结 1、value 属性 value 属性规定输入字段的初始值&#xff1a; 实例 <form action""> F…

Day9操作系统基础——linux

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 linuxSSH黑客常用命令重难点 linux SSH 黑客常用命令 重难点 linux的相关操作指令

即时抽奖,即时开奖,技术上如何实现?(原来抽奖类的运营活动背后都是这么搞的)...

回答知识星球水友“self”提问。 需求抽象一下&#xff1a; &#xff08;1&#xff09;前100个人有资格&#xff0c;假设抽出N5个奖品&#xff1b; &#xff08;2&#xff09;报名就出奖&#xff0c;不用等100人到齐&#xff1b; &#xff08;3&#xff09;每个人概率一样&…

window debug ios webview

业务需求 在window上想要debug在ios的应用中的webview页面&#xff0c;毕竟页面是在安卓端和ios端都有webview的。安卓的页面使用edge的edge://inspect/#devices&#xff0c;手机开启调试模式就可以了。对于ios就没有办法&#xff0c;页面中已经使用了vconsole可以看到部分的信…

融云观察:社交大佬发家史,模仿才是终极成功学密码?

上周&#xff0c;多所高校因微信支付将收取手续费宣布暂停使用&#xff0c;微信致歉并称在校园非盈利场景将持续保持零费率。关注【融云全球互联网通信云】了解更多 微信的回应非常迅速&#xff0c;但还是多次冲上了热搜榜&#xff0c;可见对一个用户量超过 12 亿的社交巨头来…

fiddler弱网测试 和 Chrome浏览器弱网设置

文章目录 前言 一、fiddler弱网测试 二、Chrome浏览器弱网测试 步骤1&#xff1a;在Fiddler中启动弱网 步骤2&#xff1a;设置网络参数 步骤3&#xff1a;设置完成后&#xff0c;保存 三、弱网测试关注点 总结 前言 测试APP、web经常需要用到弱网测试&#xff0c;也就是…

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

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

PyQt中资源文件的使用(详细步骤介绍)

新建文件&#xff1a; 在 Qt Creator&#xff0c;选中菜单 File->New File...&#xff0c;选择新建 Qt Resource File。 命名为res.qrc 在项目文件目录树中&#xff0c;会自动出现 Resources 文件组和 res.qrc 文件 添加资源记录&#xff1a; 在文件 res.qrc 上点击右键&a…

靶场DVWA未授权访问导致的RCE

1漏洞地址&#xff1a; http://xxxx.vom/vulnerabilities/exec/source/low.php 2漏洞原因&#xff1a; 命令执行直接拼接 3漏洞验证 linux写入phpinfo(); 到hackable/uploads/目录&#xff08;也可以直接写在当前目录&#xff09; 明文内容&#xff1a; 1&echo “<…

LeViT-UNet:transformer 编码器和CNN解码器的有效整合

levi - unet[2]是一种新的医学图像分割架构&#xff0c;它使用transformer 作为编码器&#xff0c;这使得它能够更有效地学习远程依赖关系。levi - unet[2]比传统的U-Nets更快&#xff0c;同时仍然实现了最先进的分割性能。 levi - unet[2]在几个具有挑战性的医学图像分割基准…

如何删除Linux下乱码文件

第一、使用 ls -i 命令获取文件的节点&#xff0c;如下图所示 第二、执行 find -inum 节点号 -delete 命令 删除成功。红色得就是节点号。

stm32烧录hal库固件后keil检测不到芯片,无法下载,但是按着复位键能下载和检测到芯片

keil检测不到芯片的原因有很多&#xff0c;我的原因是没有在stm32cubemx中配置下载方式 请检查stm32cubemx是否配置下载方式&#xff0c;我这里使用jlink的SWD模式进行下载&#xff0c;所以配置如下&#xff1a; 配置好后重新下载代码就可以检测到芯片了

浅析JS中变量前面的加号 + 的含义

javascript 中经常会看到在变量前面有个加号 &#xff0c;它有什么用处呢&#xff1f;其实很简单&#xff0c;就是把变量转换成 number 类型&#xff08;另外&#xff0c;变量 - 0 也是把变量的值转为数值的一种写法&#xff09;。话不多说&#xff0c;我们先看下面的几个例子…

MySQL数据库汇总

MySQL数据库必须掌握的知识点汇总 文章目录 1、三大范式2、DML 语句和 DDL 语句区别3、主键和外键的区别4、drop、delete、truncate 区别5、基础架构6、MyISAM 和 InnoDB 有什么区别&#xff1f;7、推荐自增id作为主键问题8、为什么 MySQL 的自增主键不连续9、redo log 是做什么…

Android Binder通信原理(八):IPC权限控制

源码基于&#xff1a;Android R 0. 前言 在之前的几篇博文中&#xff0c;对Android binder 的通信原理进行的深入的剖析&#xff0c;这些博文包括&#xff1a;binder 简介、servicemanager启动、service注册、service获取、Java 端的service 注册和获取、native下的C-S、java …

《QDebug 2023年6月》

一、Qt Widgets 问题交流 二、Qt Quick 问题交流 1.Qt5 的 QML Settings 没有设置编码的接口 Qt6 虽然移除了 QSettings 的 setIniCodec 接口&#xff0c;默认为 utf8&#xff0c;但是 Qt5 这个接口还能用&#xff0c;且没有默认 utf8。这就导致用 Qt5 QML 的 Settings 没法…