2020年五一杯数学建模B题基于系统性风险角度的基金资产配置策略分析解题全过程文档及程序

2020年五一杯数学建模

B题 基于系统性风险角度的基金资产配置策略分析

原题再现

近年来,随着改革开放程度的不断提高,我国经济运行中的各种风险逐渐暴露并集中传导和体现于金融领域。党的"十九大"报告提出"守住不发生系统性金融风险的底线"要求,并将防范化解重大风险看成决胜全面建成小康社会三大攻坚战的首要战役。
  作为金融系统的重要组成部分之一,资产管理业务的风险状况同样是我国金融体制改革过程中值得关注的问题。因此,中国人民银行于2018年出台了《关于规范金融机构资产管理业务的指导意见》,旨在规范金融机构资产管理业务,有效防控金融风险,引导社会资金流向实体经济,更好地支持经济结构调整和转型升级。
公募基金是最具代表性的资产管理业务形态。由于采取相对绩效考核制度,竞争压力使得公募基金资产配置变得非常复杂,持股集中度也相对较高,成为影响系统性风险的潜在因素。因此如何平衡基金投资收益和系统性风险之间的关系值得深入探究。
  请考虑下列问题:
  1. 附件1提供了2019年十家公募基金公司在股市中的一部分资产配置信息。请以此样本为例,建立合适的数学模型,度量不同基金公司之间资产配置策略的相似性。
  2. 附件2提供了2019年样本股票价格数据,假设以所有基金的持股市值总和作为初始财富,以投资效用最大化为目标,请建立合适的数学模型,确定最优的股票投资组合策略(不考虑股票之间的相关性且不允许卖空)。
  3. 假设2020年所有基金公司仍然按照2019年的资产配置策略进行投资。请根据附件1和附件2建立合适的数学模型,度量每个基金公司2020年95%置信水平下的风险价值,并进行排序。
  4. 如果要求2020年整个系统(所有样本基金公司组成)既能保证投资效用最大化,同时又能使风险价值最低,请建立合适的数学模型,确定最优的股票投资组合策略,并给出投资效用和风险价值。

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

针对本文给出的基金资产配置策略问题,本文建立了结合小波分析算法,均值-方差模型,蒙特卡罗模拟方法以及遗传算法的资产配资投资效益优化模型,对企业购买股票以及合理进行资金的配置具有一定的指导作用。
  针对问题一 本文使用皮尔逊相关系数与系统聚类的方法对基金公司的资产配置策略相似性进行度量,将每个公司购买的每种股票的总股价占所有股票总股价的比例作为指标,计算皮尔逊相关系数矩阵,再将比例作为指标进行系统聚类,与相关系数大小做对比,得到基金公司 A、B、C 的资产配置策略相似性较强,基金公司 D、F、G、H、I资产配置相似性较强,基金公司 E、G 与的资产配置策略与其他公司并没有强烈的相关性。
  针对问题二 本文结合小波分析算法与均值-方差模型确定使投资效用最大化的股票投资策略,首先补全股价缺失值,使用小波分析算法对数据进行降噪,再使用样条插值补全数据。之后计算协方差矩阵代入均值方差模型求解确定了投资效用最大的策略:总资金的 11.67% 购买股票 7,14.01% 购买股票 16,22.12% 购买股票 22,1.36% 购买股票 32,11.84% 购买股票 43,30.54% 购买股票 50,8.47% 购买股票 57。
  针对问题三 本文使用历史模拟法、蒙特卡罗方法,参数模拟法度量每个基金公司2020 年 95% 置信水平下的风险价值,首先检验各股票价格是否服从正态分布,之后用三种方法进行多次模拟,得到平均风险价值最高的基金公司为公司 H,其用三种方法计算得到的风险价值分别为 9832885917 元,1194423950 元,1075206716 元,平均风险价值最低的基金公司为公司 F,其用三种方法计算得到的风险价值分别为 201389015 元,274851565 元,238205436 元。
  针对问题四 本文建立了整个系统的兼顾投资效益以及风险价值的投资策略优化模型,并且使用遗传算法,改变初始参数多次进行求解,得到最佳适应度收敛时所对应的股票投资策略,得到当等比例投资股票 5、股票 13、股票 14、股票 19、股票 22、股票 28、股票 37、股票 38、股票 39、股票 54 时,整体适应度最高,其股票收益率期望为 0.0037,整个系统的风险价值为 4088819938 元。

模型假设:

1 假设 2020 年无金融危机、重大自然灾害、卫生事故等影响股票价格及投资者投资策略决策的因素。
  2 假设所有决策者的市场信息公开透明并且准确。
  3 假设所有投资者均可以根据市场的变化以自身利益最大化、风险最小化为目标进行选股投资。

问题分析:

问题一分析
  首先应该解决的是如何将公司的资产配置策略定量表示,之后再考虑如何用数学模型衡量两个公司之间的资产配置的相似性。
  问题二分析
  首先要理解股票价格变动的规律,用合理的方法补全数据,之后再用已有数据指标定义投资效用,建立约束条件灵活的规划模型,以投资效用最大化为目标,用软件求解。
  问题三分析
  首先要建立合适的模型对 2020 年的的风险价值进行评估,由于 2019 年的历史数据可以利用,可以用历史模拟法或蒙特卡罗法进行模拟,多次模拟后计算出 95% 置信水平下的风险价值并进行排序。
  问题四分析
  首先需要建立兼顾效益与风险的投资效益模型,其中问题二的结果可以作为参考,之后再选用合适的方法求解模型,例如 Lingo、智能算法等。

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


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

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

bash 复制代码
%根据信号计算噪声强度,给出全局阈值
[thr,sorh,keepapp]=ddencmp('den','wv',x);
%根据全局阈值对信号去噪
xd=wdencmp('gbl',x,'sym4',2,thr,sorh,keepapp);
%用sym4小波对信号做4层分解
[c,l]=wavedec(x,4,'sym4');
%得到每个层次的分层阈值
[thr1,nkeep]=wdcbm(c,l,2);
%根据分层阈值使用软阈值方法对信号去噪
[xd1,cxd,lxd,perf0,perfl2]=wdencmp('lvd',c,l,'sym4',4,thr1,'s');
%绘制原始信号和去噪后信号的图形
subplot(3,1,1);plot(x);title('原始股票单价');
subplot(3,1,2);plot(xd);title('使用全局阈值去噪后的股票单价');
subplot(3,1,3);plot(xd1);title('使用分层阈值去噪后的股票单价');
bash 复制代码
%gushu为附件一中每家公司的投资股票的股数
%closeprice为补全后的股票每日的收盘价
%%历史模拟法
value=0;
for i=1:10
value = value+gushu(i).*closeprice(:,i);
end
% 投资组合收益率
ret = price2ret(value);
figure;
subplot(2,1,1);
x=1:244;
plot(x,value);
xlabel('时间');
ylabel('组合市值');
title('投资组合市值')
subplot(2,1,2);
plot(x(2:end),ret,'*');
xlabel('时间');
ylabel('收益率');
title('投资组合日收益率')
%绘制投资组合收益率直方图
figure;
histogram(ret,20);
ylabel('天数');
xlabel('投资组合日收益率');
title('历史模拟法投资组合日收益率直方图');
%在5%置信度时,市值亏损的最大比率
Var = -prctile(ret,5) * value(end);
disp(['历史模拟法投资组合VaR为',num2str(Var)]);
%% 蒙特卡罗模拟
%计算日收益率均值和方差
mu = mean(ret);
vol = std(ret);
% 模拟间隔点
nStep = 250;
% 年化波动率
vol = vol * sqrt(nStep);
%资产初始值
s0 = value(1);
% 模拟时长
T = 1;
% 模拟路径数
nPath = 1000;
%用蒙特卡洛模拟1000次
sPath = simulatePath(s0,mu,vol,T,nStep,nPath);
% 绘制蒙特卡罗法模拟路径
figure;
plot(sPath);
xlabel('模拟时间点');
ylabel('组合市值');
title('蒙特卡罗法模拟路径');
% 计算每条模拟路径的var
ret_mc = price2ret(sPath);
Var = -mean(prctile(ret_mc,5)) * value(end);
disp(['蒙特卡罗法投资组合VaR为',num2str(Var)]);
%% 参数模型法
vol = std(ret);
ValueAtRisk = portvrisk(mu,vol);
Var = ValueAtRisk * value(end);
disp(['参数模型法投资组合VaR为',num2str(Var)]);
%%simulatePath函数
function sPath = simulatePath(S0,mu,sigma,T,nStep,nPath)
%S0资产初始值
%T模拟时长
%nStep模拟间隔点
%nPath模拟路径数
%日收益率均值
% mu=r-q
% time step
deltaT = T / nStep;
% initialize stock price matrix
sPath = nan(nStep+1,nPath);
sPath(1,:) = S0;
% Simulated according to ITO's lemma
p1 = (mu - 0.5 * sigma ^ 2 ) * deltaT;
p2 = sigma * sqrt(deltaT);
for i = 1:nPath
for j = 1:nStep
sPath(j+1,i) = sPath(j,i) * exp(p1 + p2 * randn);
end
end
end
全部论文请见下方" 只会建模 QQ名片" 点击QQ名片即可
相关推荐
赵钰老师4 分钟前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
小白学大数据3 小时前
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
爬虫·数据分析·kotlin
lovelin+v1750304096618 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
道一云黑板报18 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
数据爬坡ing19 小时前
小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
大数据·笔记·考研·数据分析
gang_unerry21 小时前
量子退火与机器学习(1):少量数据求解未知QUBO矩阵,以少见多
人工智能·python·算法·机器学习·数学建模·矩阵·量子计算
matlabgoodboy21 小时前
数据分析帮做spss数据代分析stata实证python统计R语言eviews处理
python·数据分析·r语言
終不似少年遊*1 天前
pyecharts
python·信息可视化·数据分析·学习笔记·pyecharts·使用技巧
陆沙1 天前
生物信息学导论-北大-RNA-Seq数据分析
数据分析·生物信息·生信
Watermelo6171 天前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript