1998年全国大学生数学建模竞赛A题——投资的收益和风险数模P133|lingo,matlab
1998年全国大学生数学建模竞赛A题
目录
题目
问一
用lingo求解
用matlab求解
问2
题目
市场上有n 种资产(如股票、债券、…)Si ( i=1,…n) 供投资者选择,某公司有数额为M 的一笔相当大的资金可用作一个时期的投资。公司财务分析人员对这n 种资产进行了评估,估算出在这一时期内购买Si 的平均收益率为 ri,并预测出购买Si的风险损失率为qi 。考虑到投资越分散,总的风险越小,公司确定,当用这笔资金购买若干种资产时,总体风险可用所投资的Si 中最大的一个风险来度量。
购买Si 要付交易费,费率为 pi,并且当购买额不超过给定值 ui时,交易费按购买ui 计算(不买当然无须付费)。另外,假定同期银行存款利率是r0, 且既无交易费又无风险。( r0=5% )
1)已知n = 4 时的相关数据如下:
Si ri(%) qi(%) pi(%) ui(元)
S1 28 2.5 1 103
S2 21 1.5 2 198
S3 23 5.5 4.5 52
S4 25 2.6 6.5 40
试给该公司设计一种投资组合方案,即用给定的资金 ,有选择地购买若干种资产或存银行生息,使净收益尽可能大,而总体风险尽可能小。
2)试就一般情况对以上问题进行讨论,并利用以下数据进行计算。
Si | ri/% | qi/% | pi/% | ui/元 |
S1 | 9.6 | 42 | 2.1 | 181 |
S2 | 18.5 | 54 | 3.2 | 407 |
S3 | 49.4 | 60 | 6 | 428 |
S4 | 23.9 | 42 | 1.5 | 549 |
S5 | 8.1 | 1.2 | 7.6 | 270 |
S6 | 14 | 39 | 3.4 | 397 |
S7 | 40.7 | 68 | 5.6 | 178 |
S8 | 31.2 | 33.4 | 3.1 | 220 |
S9 | 33.6 | 53.3 | 2.7 | 475 |
S10 | 36.8 | 40 | 2.9 | 248 |
S11 | 11.8 | 31 | 5.1 | 195 |
S12 | 9 | 5.5 | 5.7 | 320 |
S13 | 35 | 46 | 2.7 | 267 |
S14 | 9.4 | 5.3 | 4.5 | 328 |
S15 | 15 | 23 | 7.6 | 131 |
问一求解
用lingo求解:
model:
sets:
type/1..5/:c,x;
rate/1..4/:;
link(type,rate):asset,A;
point/1..11/:w,q_lim,v_lim;
endsets
data:
asset=5 0 0 028 2.5 1 10321 1.5 2 19823 5.5 4.5 5225 2.6 6.5 40;
w_start=0;
w_add=0.1;!权重初值和每次求解的增量;
enddatasubmodel sub:
@for(type(i):c(i)=@if(x(i)#eq#0,0,@smax(A(i,3)*A(i,4),A(i,3)*x(i)))); !计算购买各资产的交易费;
q=@max(type(i):A(i,2)*x(i)); !投资组合x的风险(以各类资产中最大的风险为度量);
v=@sum(type(i):A(i,1)*x(i)-c(i)); !投资组合x的平均净利润;
@sum(type(i):x(i)+c(i))=10000; !约束条件;
endsubmodel submodel obj:
min=w_sum*q-(1-w_sum)*v;
endsubmodelcalc:
@for(link(i,j)|j#le#3:A(i,j)=asset(i,j)*0.01); !#le#左边运算符<=右边运算符;
@for(link(i,j)|j#eq#4:A(i,j)=asset(i,j));
!系统参数设置;
!@set('terseo',1);!只输出简单的求解信息;
!@set('stawin',0);!关闭求解状态窗口;
!分别求解不同广告费上限的优化问题;
@for(point(n):w_sum=w_start+(n-1)*w_add;@solve(obj,sub);!求解子模型;
!记录计算结果;w(n)=w_sum;q_lim(n)=q;v_lim(n)=v;);
!显示所记录的结果;
@write('w 风险 净利润',@newline(1));!@write函数用于输出结果,@newline即输出新行;
@for(point(n):@write(@format(w(n),'#12.1f'),@format(q_lim(n),'#12.2f'),@format(v_lim(n),'#12.1f'),@newline(1)));
endcalc end
结果:
还可以对权重w按0.001的间隔取值计算并作图:
lingo:
sets:
type/1..5/:c,x;
rate/1..4/:;
link(type,rate):asset,A;
point/1..1001/:w,q_lim,v_lim;
endsets
data:
asset=5 0 0 028 2.5 1 10321 1.5 2 19823 5.5 4.5 5225 2.6 6.5 40;
w_start=0;
w_add=0.001;!权重初值和每次求解的增量;
@ole('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',q)=q_lim;
@ole('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',v)=v_lim;
enddata
matlab:
clc,clear
q=xlsread('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',1,'A1:A1000');
v=xlsread('C:\Users\烟雨潇潇\Desktop\新建文件夹\CSDN\数模4.8例2.xlsx',1,'B1:B1000');
plot(q,v)
xlabel('风险/元')
ylabel('收益/元')
title('例2的有效前沿')
grid on %网格线
用matlab求解(失败):
主程序:
clear,clc
global w %设定风险q和净收益v的权重分别为w,1-w
global asset
global type
%资产的数据矩阵,第一行为银行存款
%列1平均收益率,列2风险损失率,列3交易费率,列4定值
asset=[5 0 0 0;28 2.5 1 103;21 1.5 2 198;23 5.5 4.5 52;25 2.6 6.5 40];
asset(:,1:3)=asset(:,1:3)*0.01;%前三列用百分率
type=size(asset,1); %维度为1时,size返回矩阵的行数(资产种类)
% fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,nonlcon(非线性约束),options) %求fun最小值,一般fval=fun(x)
%约束条件为Aeq*x = beq 和 A*x <= b
x_final=zeros(type,11);%记录x
q=[];%记录投资组合x的风险
v=[]; %投资组合x的平均净收益
gs = GlobalSearch;
for i=1:11w=(i-1)/10;%[x,fval]=ga(@minfun,5,[],[],[],[],zeros(5,1),[],@nonfun);%x=x';problem = createOptimProblem('fmincon','objective',@minfun,'x0',zeros(5,1),'Aineq',[],'bineq',[],'Aeq',[],...
'beq',[],'lb',zeros(type,1),'ub',[],'nonlcon',@nonfun);
%'options',optimset('Algorithm','SQP','Disp','none')x = run(gs,problem);x_final(:,i)=x;q=[q,max(asset(:,2).*x)];v=[v,sum(asset(:,1).*x-cfun(x))];
end
minfun.m
function[y]=minfun(x)
global w
global asset
%x=x';
q=max(asset(:,2).*x); %投资组合x的风险(以各类资产中风险最大的一个度量)
v=sum(asset(:,1).*x-cfun(x)); %投资组合x的平均净收益
y=w*q-(1-w)*v; %设定风险q和净收益v的权重分别为w,1-w
cfun.m
function[c]=cfun(x) %cfun函数计算购买各资产的交易费
global type
global asset
c=zeros(type,1); %列向量
for i=1:typeif x(i)<=0.06c(i,1)=0;elsec(i,1)=max(asset(i,3)*asset(i,4),asset(i,3)*x(i)); %每种资产购买额x(i)不超过定值时,交易费按购买定值计算end
end
nonfun.m
function[g,ceq]=nonfun(x)%非线性约束:g(x)<=0 ,ceq(x)=0
%x=x';
g=[];
m=10000;
ceq=sum(x+cfun(x))-m;
matlab尝试过很多次,下图是最好的一次,但是cfun里要设置x<=0.06,x==0会和书上结果大不一样。
问2
简单的代入就可以了,如果w以0.1为间隔,运行15秒即可出结果。
1998年全国大学生数学建模竞赛A题——投资的收益和风险数模P133|lingo,matlab相关推荐
- 2021 年高教社杯全国大学生数学建模竞赛A题分析
2021 年高教社杯全国大学生数学建模竞赛A题分析 题目 赛题分析 前言 问题一分析 问题二分析 问题三分析 题目 A 题 "FAST"主动反射面的形状调节 中国天眼--500 米 ...
- 2020年高教社杯全国大学生数学建模竞赛 C题思路
2020年高教社杯全国大学生数学建模竞赛 C题 中小微企业的信贷决策 本文旨在为广大热爱建模的朋友们提供2020年数学建模C题的思路和解法. 问题回顾 在实际中,由于中小微企业规模相对较小,也缺少抵押 ...
- 2020年全国大学生数学建模竞赛B题穿越沙漠问题——建立整数线性规划模型(ILP)——通过LINGO求解
2020年全国大学生数学建模竞赛B题 穿越沙漠 题目是讲玩家在不同地图下穿越沙漠,所获得的资金数要最多(大概是这个意思).然后通过文章的描述又总结了N个约束条件.整体的思路就是对资金最大化作为目标函数 ...
- 2020年高教社杯全国大学生数学建模竞赛C题 第一问详细解答+代码
2020年高教社杯全国大学生数学建模竞赛C题 第一问详细解答+代码 本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦. 1. 问题分析 问题一主要围绕信贷 ...
- 【数学建模】2003年全国大学生数学建模竞赛B题求解
目录 [数学建模]2003年全国大学生数学建模竞赛B题求解 [数学建模]2003年全国大学生数学建模竞赛B题求解 model: title CUMCM-2003B-01; sets: cai / 1. ...
- 2022年全国大学生数学建模竞赛C题思路
一.思路获取方式 获取代码方式: 2022年全国大学生数学建模竞赛赛题思路 备注: 点击上面蓝色字体2022年全国大学生数学建模竞赛赛题思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏20 ...
- 2022年全国大学生数学建模竞赛E题思路
一.思路获取方式 获取代码方式: 2022年全国大学生数学建模竞赛赛题思路 备注: 点击上面蓝色字体2022年全国大学生数学建模竞赛赛题思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏20 ...
- 2022年全国大学生数学建模竞赛A题思路
一.思路获取方式 获取代码方式: 2022年全国大学生数学建模竞赛赛题思路 备注: 点击上面蓝色字体2022年全国大学生数学建模竞赛赛题思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏20 ...
- 尖峰法聚类:2021 年高教社杯全国大学生数学建模竞赛 E题 中药材的鉴别 问题1
PeakCluster是Lu优化库中的一个函数,该函数利用数据曲线尖峰形状和位置进行聚类分析. 例子:2021 年高教社杯全国大学生数学建模竞赛 E题 中药材的鉴别 问题1:根据附件 1 中几种药材的 ...
最新文章
- 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看
- 宏BOOST_TEST_TRAIT_TRUE的用法实例
- 2014\Province_C_C++_B\2 切面条
- jstat分析_jstat –分析
- f3arra1n3.4.1版本_Sysmon v11.1新版本功能测试报告
- pcp pmda mysql_linux下的mysql的安装
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
- 3d Max如何移除和取消网格显示
- editorloop 占用_【交换机在江湖-维护无忧系列】CPU占用率高故障专题(3)-常见故障案例...
- python项目实战:天眼查询你所需的公司信息
- recovery 恢复出厂设置失败Data wipe failed
- UPnP 体系架构和基本原理 —— UPnP的描述文件
- 面试官问你Java线程池--怎么样回答才能让面试官知道你真的懂了!
- android aidl混淆代码,Android代码混淆
- HTTP概念协议报文结构请求响应数据报分析
- ospf理论概述.md
- 让数字预失真的故障排除和微调不再难 必备攻略请查收
- 用 Python 爬取糗事百科
- 3.11 CMMI3级——组织培训(Organizational Training)
- microsoft edge浏览器朗读卡顿解决办法
热门文章
- 十年一梦(炒股的经历)
- PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解 (下)
- Android Fragment切换动画(滑入滑出)
- php 输入 输出,php的文件输入输出流php://input
- ExtJS 4.2心得和总结:布局系统详解(Ext.layout.container)
- PDF文档怎么添加水印?手机就能轻松操作
- (写给 未来的 自己) --- 我的明天
- C# 14440 125K串口 rfid门禁
- DRM架构介绍(一)
- 德国计算机语言学专业哪个学校好,德国热门学科大学排名情况一览