前言

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

该问题的处理类似于问题一,同样需要对数据进行预处理、量化分析信贷风险,并给出信贷策略。

不同之处在于:

① 企业数量,从123家企业变为302家企业。

② 限制了年度信贷总额为1亿元。

③ 302家企业没有信贷记录,即缺少信誉评级以及是否违约情况。

因此,解决问题二的关键一步是如何构建302家企业的评价指标。从参考论文可以看到,作者主要是利用附件1数据找出相关规律,再对302家企业进行信誉评价,最后算出违约率,将问题二转化为问题一。

该论文利用欧式距离确认302家企业的信誉等级,具体为先计算4个信誉等级对应的平均净发票总金额数,然后建立302家无信贷记录企业的净发票总金额到4个信誉等级对应的平均净发票总金额数的距离,最后以距离最小为目标函数,确认企业信誉等级。

思维导图:


数据预处理

与问题一相同,需要对附件2数据进行无效发票剔除、相同发票的数据剔除

这里不再赘述,代码参考问题一(【day3】从零开始学数学建模-国赛2020C题305-问题一代码复现-数据预处理)。


信用等级

信用等级计算

该论文主要利用欧式距离确认信誉等级,除了欧式距离还有其他若干种距离度量方法,有兴趣的可以看下面的帖子。

欧氏距离(Euclidean Distance) - 知乎

常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)-CSDN博客

% 302家企业信誉等级确认——欧式距离

clear;clc;

%% 四个等级 对应 平均发票总金额
% 信誉评级 A:4 B:3 C:2 D:1
dat = readtable('附件1:123家有信贷记录企业的相关数据.xlsx','sheet','企业信息','VariableNamingRule','preserve');
infor = string(table2cell(dat(:,3)));
shouyue = string(table2cell(dat(:,4)));

for i=1:length(infor)
    if infor(i)=='A'
        x3(i,1)=4;
    elseif infor(i)=='B'
        x3(i,1)=3;
    elseif infor(i)=='C'
        x3(i,1)=2;
    else
        x3(i,1)=1;
    end
end

% 发票总金额
load s_in_1.mat
load s_out_1.mat
x4 = t2-t1;

A = [sum(x4(x3==4))./sum(x3==4),sum(x4(x3==3))./sum(x3==3),...
    sum(x4(x3==2))./sum(x3==2),sum(x4(x3==1))./sum(x3==1)];

%% 评估信誉等级 欧式距离最小
load s_in_2.mat
load s_out_2.mat
X4 = t2-t1;

for i=1:length(X4)
    B = [sqrt(X4(i).^2-A(1).^2),sqrt(X4(i).^2-A(2).^2),...
         sqrt(X4(i).^2-A(3).^2),sqrt(X4(i).^2-A(4).^2)];
    [vr,it] = min(B);
    xy(i,1) = it;
end
x3 = xy;
save('xy_2.mat','x3');

结果

信誉等级 A B C D
平均净发票总金额数 22508668.2911 29877727.3792 87662694.3929 1510931.575

论文结果:

两者结果还是有些差距,相较于论文结果,我计算出来的结果偏小,这可能是数据预处理不一样导致的(对于这种结果,我已经习惯了【捂脸】)。

接着往下看。

企业 1 2 3 4 5 6 7 8 9 10
信誉等级 C C C C C C B C C C
企业 11 12 13 14 15 16 17 18 19 20
信誉等级 C C D C C C C C C C
企业 21 22 23 24 25 26 27 28 29 30
信誉等级 C B C C C C B C C C
…… …… …… …… …… …… …… …… …… …… ……
企业 291 292 293 294 295 296 297 298 299 300
信誉等级 D D D D D D D D D D
企业 301 302
信誉等级 D D

既然4个信誉等级的平均净发票总金额数都不同,302家企业的信誉等级自然不会和论文的相同,所以也没有必要对比了。


守约率

守约率计算

守约率计算同问题一(【day4】从零开始学数学建模-国赛2020C题305-问题一代码复现-计算守约率)。

%% 求解回归系数&守约率

clc; clear;
load x1_2.mat
load x2_2.mat
load s_in_2.mat
load s_out_2.mat
load xy_2.mat

x4 = t2-t1;
x5 = (c1+c2)/2;


X=[x1 x2 x3 x4 x5];
X_scaled = zscore(X); %标准化处理

% 线性回归系数
x0=ones(size(X,1),1);
x=[x0,X_scaled];
y=zeros(302,1);y(1:151,1)=0;y(152:302,1)=1;
beta=regress(y,x);

%% 守约率计算
% beta=[0.9347 11.163 0.3755 -0.9628 -1.7519*10^(-10) -0.0512];
p = 1./(1+exp(-(beta(1)+beta(2)*X_scaled(:,1)+beta(3)*X_scaled(:,2)+...
    beta(4)*X_scaled(:,3)+beta(5)*X_scaled(:,4)+beta(6)*X_scaled(:,5))));

save('p_2.mat','p');

结果

企业 1 2 3 4 5 6 7 8 9 10
守约率 0.4598 0.3945 0.3253 0.3420 0.4446 0.3844 0.5257 0.5743 0.5392 0.5638
企业 11 12 13 14 15 16 17 18 19 20
守约率 0.5367 0.5282 0.6965 0.5721 0.5506 0.5326 0.4869 0.5391 0.5766 0.5738
企业 21 22 23 24 25 26 27 28 29 30
守约率 0.5495 0.5256 0.5718 0.5414 0.5692 0.5567 0.5222 0.5578 0.5408 0.4325
…… …… …… …… …… …… …… …… …… …… ……
企业 291 292 293 294 295 296 297 298 299 300
守约率 0.6976 0.7000 0.6807 0.6937 0.6925 0.6901 0.6915 0.6994 0.6992 0.6918
企业 301 302
守约率 0.6912 0.6907


贷款策略

clear;clc;
%% 步骤1: 准备数据
load p_2.mat

%% 步骤2: 定义模型参数
n = 302;                                % 企业数量
x_min = 10;                             % 最小贷款额(万元)
x_max = 100;                            % 最大贷款额(万元)
total_min = 3020;                       % 总贷款下限(万元)
total_max = 10000;                      % 总贷款上限(万元)
r_min = exp(-2.2386/0.669);             % 最低年利率
r_max = exp((0.708302023-2.2386)/0.669);% 最高年利率

%% 步骤3: 建立优化模型
model = optimproblem('ObjectiveSense','maximize');

% 定义决策变量
x = optimvar('x', n, 'LowerBound', x_min, 'UpperBound', x_max); % 贷款额度
r = optimvar('r', n, 'LowerBound', r_min, 'UpperBound', r_max); % 贷款利率
u = optimvar('u', 'LowerBound', 0); % 最大风险辅助变量

% 定义目标函数 (加权法)
weight_profit = 0.5;        % 收益目标权重
weight_risk = 0.5;          % 风险目标权重

% 总收益函数:
total_profit = sum((r-(1-p)).*x);

% 总风险函数:
total_risk = u;

% 组合目标函数
model.Objective = weight_profit*total_profit - weight_risk*total_risk;

% 添加约束条件
% 1. 总贷款额度约束
model.Constraints.totalLoan = total_min <= sum(x);
model.Constraints.totalLoan = sum(x) <= total_max;

% 2. 最大风险约束
model.Constraints.riskLimit = (1-p).*x <= u;

%% 步骤4: 求解优化问题
options = optimoptions('fmincon', 'Algorithm', 'sqp', ...
                      'Display', 'iter', 'MaxIterations', 1000, ...
                      'MaxFunctionEvaluations', 10000);

% 初始解 (等额贷款, 中等利率)
x0.x = ones(n,1) * total_min/n;
x0.r = ones(n,1) * (r_min + r_max)/2;
x0.u = max((1-p).* x0.x);

% 求解
[sol, fval, exitflag] = solve(model, x0, 'Options', options);

%% 步骤5: 提取结果
loan_amounts = sol.x;       % 各企业贷款额度(万元)
interest_rates = sol.r;     % 各企业贷款利率
max_risk = sol.u;           % 最大风险值
total_profit_value = sum((sol.r-(1-p)).*sol.x); % 总收益
 
%% 步骤6: 分析结果
% 按贷款额度排序
[sorted_loans, idx] = sort(loan_amounts, 'descend');

% 风险-收益分布图
figure;
scatter((1-p).*loan_amounts, (interest_rates - (1-p)).*loan_amounts, 50, p, 'filled');
colorbar;
title('企业风险-收益分布');
xlabel('风险值: (1-p_i)x_i');
ylabel('收益值: [r_i - (1-p_i)]x_i');
grid on;
企业 信誉等级 守约率(%) 贷款金额 贷款金额利率 企业 信誉等级 守约率(%) 贷款金额 贷款金额利率
1 C 45.98 10.00125 0.1014411 152 A 48.73 10.00131 0.1014401
2 C 39.45 10.00115 0.1014433 153 D 68.08 10.00201 0.1014345
3 C 32.53 10.00009 0.1014456 154 D 68.69 10.00205 0.1014343
4 C 34.20 10.00107 0.1014451 155 D 68.97 10.00207 0.1014343
5 C 44.46 10.00123 0.1014416 156 D 68.96 10.00207 0.1014343
6 C 38.44 10.00114 0.1014437 157 D 68.95 10.00206 0.1014343
7 B 52.57 10.00140 0.1014388 158 D 67.93 10.00200 0.1014345
8 C 57.43 10.00153 0.1014372 159 D 67.23 10.00195 0.1014346
9 C 53.92 10.00143 0.1014384 160 D 68.92 10.00206 0.1014343
10 C 56.38 10.00150 0.1014376 161 D 68.04 10.00200 0.1014345
11 C 53.67 10.00142 0.1014384 162 A 49.31 10.00132 0.1014399
12 C 52.82 10.00140 0.1014387 163 D 69.00 10.00207 0.1014343
13 D 69.65 10.00211 0.1014342 164 D 68.41 10.00203 0.1014344
14 C 57.21 10.00152 0.1014373 165 D 69.41 10.00210 0.1014342
15 C 55.06 10.00146 0.1014380 166 D 68.06 10.00201 0.1014345
16 C 53.26 10.00141 0.1014386 167 D 67.83 10.00199 0.1014345
17 C 48.69 10.00131 0.1014401 168 D 68.78 10.00205 0.1014343
18 C 53.91 10.00143 0.1014384 169 D 68.86 10.00206 0.1014343
19 C 57.66 10.00154 0.1014372 170 D 68.77 10.00205 0.1014343
20 C 57.38 10.00153 0.1014373 171 A 48.59 10.00130 0.1014402
21 C 54.95 10.00146 0.1014380 172 D 68.72 10.00205 0.1014343
22 B 52.56 10.00140 0.1014388 173 D 67.35 10.00196 0.1014346
23 C 57.18 10.00152 0.1014373 174 D 69.40 10.00210 0.1014342
24 C 54.14 10.00144 0.1014383 175 D 68.60 10.00204 0.1014344
25 C 56.92 10.00152 0.1014374 176 D 68.17 10.00201 0.1014344
26 C 55.67 10.00148 0.1014378 177 D 68.55 10.00204 0.1014344
27 B 52.22 10.00139 0.1014389 178 D 68.29 10.00202 0.1014344
28 C 55.78 10.00148 0.1014378 179 D 67.78 10.00199 0.1014345
29 C 54.08 10.00143 0.1014383 180 D 68.01 10.00200 0.1014345
30 C 43.25 10.00121 0.1014420 181 D 68.84 10.00206 0.1014343
31 D 68.62 10.00204 0.1014344 182 A 47.88 10.00129 0.1014404
32 D 67.97 10.00200 0.1014345 183 D 68.23 10.00202 0.1014344
33 C 49.56 10.00133 0.1014398 184 D 68.19 10.00201 0.1014344
34 B 54.63 10.00145 0.1014381 185 D 67.54 10.00197 0.1014346
35 B 51.80 10.00138 0.1014391 186 D 67.79 10.00199 0.1014345
36 C 57.48 10.00153 0.1014372 187 D 68.70 10.00205 0.1014343
37 C 53.18 10.00141 0.1014386 188 D 68.39 10.00203 0.1014344
38 C 52.68 10.00140 0.1014388 189 B 60.11 10.00162 0.1014364
39 B 51.75 10.00138 0.1014391 190 D 68.57 10.00204 0.1014344
40 B 52.74 10.00140 0.1014388 191 D 68.26 10.00202 0.1014344
41 C 58.17 10.00156 0.1014370 192 D 67.89 10.00199 0.1014345
42 B 52.75 10.00140 0.1014387 193 D 68.30 10.00202 0.1014344
43 C 56.34 10.00150 0.1014376 194 D 68.61 10.00204 0.1014344
44 D 68.84 10.00206 0.1014343 195 D 68.63 10.00204 0.1014344
45 C 57.28 10.00153 0.1014373 196 D 69.00 10.00207 0.1014343
46 C 57.25 10.00153 0.1014373 197 D 68.16 10.00201 0.1014344
47 B 51.74 10.00138 0.1014391 198 D 68.98 10.00207 0.1014343
48 C 57.81 10.00154 0.1014371 199 D 68.60 10.00204 0.1014344
49 B 54.26 10.00144 0.1014383 200 D 67.67 10.00198 0.1014345
50 B 55.16 10.00146 0.1014380 201 C 68.82 10.00206 0.1014343
51 B 55.26 10.00147 0.1014379 202 D 68.93 10.00206 0.1014343
52 D 69.17 10.00208 0.1014343 203 D 68.94 10.00206 0.1014343
53 C 56.38 10.00150 0.1014376 204 D 68.89 10.00206 0.1014343
54 A 49.11 10.00132 0.1014400 205 D 68.18 10.00201 0.1014344
55 D 68.16 10.00201 0.1014344 206 D 69.36 10.00209 0.1014342
56 B 53.42 10.00142 0.1014385 207 D 68.92 10.00206 0.1014343
57 C 57.13 10.00152 0.1014373 208 D 68.35 10.00202 0.1014344
58 D 69.39 10.00210 0.1014342 209 A 48.92 10.00131 0.1014401
59 B 53.40 10.00142 0.1014385 210 D 69.06 10.00207 0.1014343
60 B 53.28 10.00141 0.1014386 211 D 69.37 10.00209 0.1014342
61 B 55.34 10.00147 0.1014379 212 D 68.04 10.00200 0.1014345
62 B 51.55 10.00137 0.1014392 213 D 69.63 10.00211 0.1014342
63 C 56.72 10.00151 0.1014375 214 D 68.16 10.00201 0.1014344
64 B 60.01 10.00162 0.1014365 215 D 68.59 10.00204 0.1014344
65 A 48.99 10.00131 0.1014400 216 D 69.68 10.00212 0.1014342
66 B 54.63 10.00145 0.1014381 217 D 68.06 10.00201 0.1014345
67 C 52.94 10.00140 0.1014387 218 D 69.67 10.00212 0.1014342
68 C 50.62 10.00135 0.1014395 219 D 67.85 10.00199 0.1014345
69 B 52.84 10.00140 0.1014387 220 D 69.88 10.00213 0.1014341
70 C 56.68 10.00151 0.1014375 221 D 68.10 10.00201 0.1014345
71 B 52.38 10.00139 0.1014389 222 D 69.06 10.00207 0.1014343
72 C 57.88 10.00155 0.1014371 223 D 69.02 10.00207 0.1014343
73 B 54.60 10.00145 0.1014381 224 D 69.06 10.00207 0.1014343
74 C 48.54 10.00130 0.1014402 225 D 68.70 10.00205 0.1014343
75 D 68.45 10.00203 0.1014344 226 D 69.68 10.00212 0.1014342
76 C 57.78 10.00154 0.1014371 227 D 69.27 10.00209 0.1014342
77 D 68.99 10.00207 0.1014343 228 D 68.93 10.00206 0.1014343
78 A 48.53 10.00130 0.1014402 229 D 69.86 10.00213 0.1014341
79 C 54.44 10.00144 0.1014382 230 D 68.37 10.00203 0.1014344
80 B 54.32 10.00144 0.1014382 231 D 69.17 10.00208 0.1014343
81 B 53.54 10.00142 0.1014385 232 D 66.12 10.00189 0.1014349
82 B 51.81 10.00138 0.1014391 233 D 69.72 10.00212 0.1014342
83 B 53.91 10.00143 0.1014384 234 D 68.50 10.00203 0.1014344
84 C 57.83 10.00154 0.1014371 235 D 69.98 10.00214 0.1014341
85 D 69.64 10.00211 0.1014342 236 D 69.95 10.00214 0.1014341
86 B 52.82 10.00140 0.1014387 237 D 69.93 10.00214 0.1014341
87 B 52.88 10.00140 0.1014387 238 D 69.04 10.00207 0.1014343
88 B 53.94 10.00143 0.1014384 239 D 68.32 10.00202 0.1014344
89 C 56.79 10.00151 0.1014374 240 D 67.98 10.00200 0.1014345
90 B 54.60 10.00145 0.1014381 241 D 69.19 10.00208 0.1014342
91 A 48.03 10.00129 0.1014404 242 D 68.89 10.00206 0.1014343
92 C 58.54 10.00157 0.1014369 243 D 69.61 10.00211 0.1014342
93 B 53.90 10.00143 0.1014384 244 D 67.76 10.00199 0.1014345
94 B 61.74 10.00169 0.1014360 245 D 68.40 10.00203 0.1014344
95 A 48.57 10.00130 0.1014402 246 D 68.93 10.00206 0.1014343
96 A 48.29 10.00130 0.1014403 247 D 66.32 10.00190 0.1014348
97 B 53.83 10.00143 0.1014384 248 D 68.96 10.00207 0.1014343
98 B 54.74 10.00145 0.1014381 249 D 68.98 10.00207 0.1014343
99 B 54.14 10.00144 0.1014383 250 A 52.77 10.00140 0.1014387
100 D 68.67 10.00205 0.1014343 251 D 69.71 10.00212 0.1014342
101 A 48.96 10.00131 0.1014400 252 D 69.89 10.00213 0.1014341
102 B 53.87 10.00143 0.1014384 253 D 69.76 10.00212 0.1014341
103 D 68.20 10.00201 0.1014344 254 D 69.44 10.00210 0.1014342
104 A 48.25 10.00130 0.1014403 255 D 69.04 10.00207 0.1014343
105 B 53.53 10.00142 0.1014385 256 D 68.66 10.00205 0.1014343
106 D 69.09 10.00207 0.1014343 257 D 70.01 10.00214 0.1014341
107 B 53.95 10.00143 0.1014384 258 C 68.50 10.00203 0.1014344
108 D 68.35 10.00202 0.1014344 259 D 69.97 10.00214 0.1014341
109 A 48.51 10.00130 0.1014402 260 D 69.83 10.00213 0.1014341
110 A 49.66 10.00133 0.1014398 261 D 68.42 10.00203 0.1014344
111 B 53.96 10.00143 0.1014383 262 D 68.07 10.00201 0.1014345
112 B 53.94 10.00143 0.1014384 263 D 69.04 10.00207 0.1014343
113 B 53.50 10.00142 0.1014385 264 D 69.96 10.00214 0.1014341
114 D 67.78 10.00199 0.1014345 265 D 69.27 10.00209 0.1014342
115 B 53.08 10.00141 0.1014386 266 D 69.85 10.00213 0.1014341
116 D 68.66 10.00204 0.1014343 267 D 68.97 10.00207 0.1014343
117 D 68.87 10.00206 0.1014343 268 D 69.89 10.00213 0.1014341
118 B 54.01 10.00143 0.1014383 269 D 69.11 10.00208 0.1014343
119 A 52.78 10.00140 0.1014387 270 D 69.27 10.00209 0.1014342
120 B 54.95 10.00146 0.1014380 271 D 68.30 10.00202 0.1014344
121 A 48.88 10.00131 0.1014401 272 D 68.49 10.00203 0.1014344
122 B 55.73 10.00148 0.1014378 273 D 68.35 10.00202 0.1014344
123 B 54.55 10.00145 0.1014382 274 D 69.19 10.00208 0.1014342
124 D 67.70 10.00198 0.1014345 275 D 69.07 10.00207 0.1014343
125 D 68.07 10.00201 0.1014345 276 D 69.36 10.00209 0.1014342
126 B 52.79 10.00140 0.1014387 277 D 68.98 10.00207 0.1014343
127 B 54.92 10.00146 0.1014380 278 D 69.32 10.00209 0.1014342
128 D 67.31 10.00196 0.1014346 279 D 69.93 10.00214 0.1014341
129 D 68.01 10.00200 0.1014345 280 D 68.98 10.00207 0.1014343
130 D 67.69 10.00198 0.1014345 281 D 67.44 10.00197 0.1014346
131 B 54.94 10.00146 0.1014380 282 D 69.01 10.00207 0.1014343
132 B 54.25 10.00144 0.1014383 283 D 69.50 10.00210 0.1014342
133 A 49.36 10.00132 0.1014399 284 D 69.06 10.00207 0.1014343
134 D 68.04 10.00200 0.1014345 285 D 69.06 10.00207 0.1014343
135 B 51.89 10.00138 0.1014390 286 D 69.85 10.00213 0.1014341
136 A 48.71 10.00131 0.1014401 287 D 68.72 10.00205 0.1014343
137 D 68.90 10.00206 0.1014343 288 D 68.83 10.00206 0.1014343
138 D 67.49 10.00197 0.1014346 289 D 68.75 10.00205 0.1014343
139 D 68.70 10.00205 0.1014343 290 D 69.51 10.00210 0.1014342
140 A 49.44 10.00132 0.1014399 291 D 69.76 10.00212 0.1014341
141 A 52.05 10.00138 0.1014390 292 D 70.00 10.00214 0.1014341
142 D 67.95 10.00200 0.1014345 293 D 68.07 10.00201 0.1014345
143 B 54.56 10.00145 0.1014382 294 D 69.37 10.00209 0.1014342
144 A 49.47 10.00132 0.1014399 295 D 69.25 10.00209 0.1014342
145 A 48.40 10.00130 0.1014402 296 D 69.01 10.00207 0.1014343
146 A 49.30 10.00132 0.1014399 297 D 69.15 10.00208 0.1014343
147 A 48.74 10.00131 0.1014401 298 D 69.94 10.00214 0.1014341
148 D 69.41 10.00210 0.1014342 299 D 69.92 10.00213 0.1014341
149 D 67.77 10.00199 0.1014345 300 D 69.18 10.00208 0.1014342
150 A 48.35 10.00130 0.1014402 301 D 69.12 10.00208 0.1014343
151 D 68.94 10.00206 0.1014343 302 D 69.07 10.00207 0.1014343

不过贷款策略的结果似乎有点不太对劲,这应该是求解多目标规划模型的方法有问题,由于时间有限,这个问题稍后再改。

---------------------------------------------------------------------------------------------------------------------------------

国赛2020C题305论文系列教程:

【day2】从零开始学数学建模-国赛2020C题305-思路_数学建模2020高教社杯c题论文-CSDN博客

【day3】从零开始学数学建模-国赛2020C题305-问题一-数据预处理_2020c国赛建模数据预处理-CSDN博客

【day4】从零开始学数学建模-国赛2020C题305-问题一-计算守约率-CSDN博客

【day5】从零开始学数学建模-国赛2020C题305-问题一-贷款策略-多目标规划模型-CSDN博客

【day6】从零开始学数学建模-国赛2020C题305-问题二-全流程-CSDN博客

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐