本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦。
问题2 缺少信誉评级后的 信贷策略 研究
问题二与问题一的不同在于,问题二中的企业均是无信贷记录企业,缺少信誉评级这一项,相当于在问题一 的基础上少了一个评判尺度。另外,问题二对银行的信贷总额进行了量化,规定信贷总额为一亿元。条件略有不同,但是问题却使一致的,还是对企业的信贷风险进行量化分析,并给出银行对这些企业的信贷策略。
对于信贷风险,因为问题二中的企业没有信誉评级,因此把企业实力作为评判企业信贷风险唯一尺度,进而对各企业的信贷风险进行评估。对于信贷策略,因为缺少了信誉评级,信任值的计算方式会发生改变, 但我们还是可以通过计算得到的信任值对对于 信贷风险决策变量进行衡量。另外缺少信誉评级后, 客户丢失率这一指标也会随之丢失,所以在信贷策略模型中 的目标函数的计算方法也会随之有些许改变,但是 后续的 算法设计不会发生过多改变。
无信贷企业的数据信息除了无信誉评级外,其他进项发票、销项发票的信息和有信贷企业的信息使基本类似,所以我们采取同第一问的数据处理办法,对无信贷企业的数据进行了预处理。
在第一问的基础上,我们忽略企业信誉等级这一因素,给出信任值C的计算公式:
C=CP
CP∈(0,1)
以上式子中, CP企业实力评价系数。企业实力评价系数的计算仍然利用离差标准化的方法,对企业利润数据进行归一处理。
问题二中,适应值的计算方式有所不同,是否放贷取决于企业的实力于供求关系,我们仍然采用问题一中的模型与计算方法。
为了描述放贷的可能性,我们定义p为放贷可能性,p0为允许放贷的最低阈值,其中p由信贷风险和供求关系决定,其中放贷与否我们用0/1来表示,1表示放贷,0表示不放贷。
其中C 是 问题二中重新计算得到的 信任值, C 的值越大,风险越低,放贷可能性就越高, G 为供求稳定系数, a,b 分别为信贷风险和供求稳定性在放贷可能性计算中的权重 其中 G 和 C 的范围均为( 0,1) 。问题二中的供求稳定系数由 无信贷企业 订单中有效订单的个数决定,我们主要考虑购买和销售时的稳定情况,记销项发票中企业 i 的订单数一共为 N1, 其中有效发票数为 M 1 ,记进项发票中企业 i 的订单数一共为 N 2, 其中有效发票为 M 2则供求稳定系数 G 的计算公式为:
结果展示
结合实际的放贷可能性计算结果,我们取0的值为所有放贷可能性 p 的平均值,最后按照已构建的模型判断了 302 个企业的放贷与否情况, 其中共有 127个企业获得了贷款资格, 部分允许放贷的企业代码和放贷可能性大小计算 如表 所示 。
问题分析
我们依然采用同第一问的信贷策略模型,利用模拟退火算法对模型进行求解,所不同的是在信贷风险决策变量和利率变动的计算中,因为适应值 C 的改变导致计算有所不同, 设风险值 r =1 C 下面我们给出利率变动的计算公式。
其中′为变动后的利率, x 为原始利率, r 为 风险 值, ()为 302 个企业的平均 风险值 ,经计算平均 风险值 为 0.4 2 ,−()为信贷风险决策变量。 当企业风险值低于平均风险值时,信贷风险决策变量小于 1 ,表示银行对给予一定的利率优惠。
另外第二问对于贷款额度给出了上限值,所以相当于在一问的基础上增加而限制条件,模型中的目标函数是没有改变的,不同的是约束条件多了额度总上限为 1 亿元 下面我们给出 具体的模型:
结果分析
多次迭代之后,我们得到银行利润在960万左右,在满足利润最大时,部分企业对应的利率和额度如如图6.3,模拟退火的迭代图以及部分结果如下所示。
从模拟退火算法迭代图来看,在寻找最优解的过程中,前期搜索范围较大,所得到的利润不是很大,随着迭代次数的增加利润的最优值逐渐稳定,最后在960万附近微小波动。
部分参考代码如下
%**********
第二问求解
%second_main.m
%针对无信贷荣誉等级企业的银行利润求解
% z:银行给每个企业放贷所得利润 w :银行的总利润 x: 利率 y: 额度,
%r:风险, aver_r: 平均风险值
%银行利润方程: z=x*y*e.^(r aver_r)
%确定可放贷企业个数 127 个
r=xlsread('可贷款企业信息 .xlsx',1,'B67:
aver_r=mean(r);
%得出 aver_r=0.5205,max= 0.6038; min=0
%确定有优惠政策时,初始的利率范围
%由方程 exp(r aver_r)*x=0.04+(0.15 0.04)*rand(127,1);
%可得利率 x 的范围: 0.0673=<x<=0.1380
%给每个企业放贷所得利润: z i ))=exp(r( aver_r)*x(i)*y(i)
%银行所得总利润 w=sum(z)
%计算向企业放贷时银行所得利润
z=zeros(127,1);
f=zeros(127,1);
w=zeros(100000,1);
max_lirun=0;
%以下确定较好的初始解
count=0;
for t=1:100000
x=0.0673+(0.1380 0.0507)*rand(127,1);
y=10*10^4+(100 10)*10^4*rand(127,1);
if sum(y)<=10^9
count=count+1;
for j=1:127
z(j)=exp(r(j) aver_r)*x(j)*y(j);
w(count)=w(count)+z(j);
end
else
continue;
end
if count==1
max_lirun=w(count);
fenpei_x=x;
fenpei_y=y;
index=count;
elseif count>1
if w(count)>w(index)
max_lirun=w(count);
fenpei_x=x;
fenpei_y=y;
index=count;
end
end
end
count