今天学到数学模型P131 4.8节 例1 投资组合,这仍然是一个非线性规划问题,里面主要涉及两个式子。

其中第二个写起来比较复杂,在lingo中分步计算出期望,协方差后,比较好写。

model:
sets:
stock/1..3/:x,mean;
year/1..12/:;
link(stock,year):A,R;
matrix(stock,stock):cov;
endsetsdata:
A=
1.3 1.103 1.216 0.954 0.929 1.056 1.038 1.089 1.09 1.083 1.035 1.176
1.225 1.29 1.216 0.728 1.144 1.107 1.321 1.305 1.195 1.39 0.928 1.715
1.149 1.26 1.419 0.922 1.169 0.965 1.133 1.732 1.021 1.131 1.006 1.908;
enddata@for(link(i,j):@free(R(i,j)));!令R负数也可以;
@for(link(i,j):R(i,j)=A(i,j)-1);!计算年收益率;
@for(stock(i):mean(i)=@sum(year(j):R(i,j))/@size(year));!计算各股票年收益率均值(期望);
@for(matrix(i,j):cov(i,j)=@sum(year(k):(R(i,k)-mean(i))*(R(j,k)-mean(j)))/(@size(year)-1));!计算协方差矩阵;
min=@sum(matrix(i,j):x(i)*x(j)*cov(i,j));!年投资收益率方差最小;
@sum(stock(i):x(i)*mean(i))>=0.15;!股票综合年期望收益率不低于15%;
@sum(stock(i):x(i))=1;!股票权重;end

结果跑出来和书上一致:

再用matlab用fmincon函数(解非线性规划)做一遍,先写目标函数,取名为minfun.m

function[y]=minfun(x)
global cv
y=[];
for i=1:3for j=1:3y=[y,x(i)*x(j)*cv(i,j)];end
end
y=sum(y);

主程序:

clear all
global cv
profit=[1.3 1.103 1.216 0.954 0.929 1.056 1.038 1.089 1.09 1.083 1.035 1.176;1.225 1.29 1.216 0.728 1.144 1.107 1.321 1.305 1.195 1.39 0.928 1.715;1.149 1.26 1.419 0.922 1.169 0.965 1.133 1.732 1.021 1.131 1.006 1.908];
profit=profit-1;%年收益率要减1
ER=mean(profit,2);    %求均值,每行为一个样本
cv=cov(profit');         %cov函数以每列为一个样本
% fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,nonlcon(非线性约束),options)  %求fun最小值,一般fval=fun(x)
%约束条件为Aeq*x = beq 和 A*x <= b
[x,fval]=fmincon('minfun',zeros(3,1),-ER',-0.15,ones(1,3),1)    % x列向量,其他行向量

要注意一点,需要minfun函数和外面主程序都写global cv,才能顺利在minfun里调动cv变量(只写一个global cv 会出错,必须主程序里声明cv是全局变量,minfun函数里再次声明cv是全局变量,才能在minfun里调用cv)。还有一种方法是在minfun里将cv变量计算出来。

run出的结果:

数学模型4.8例1投资组合lingo,matlab相关推荐

  1. lingo子模型——数学模型4.7 例1 广告投入

    数学模型4.7 例1 广告投入 书里不断递增广告费上限,并求解各广告费上限约束下的吸引总人数.从两者的关系出发,对多目标规划(广告费希望最少,吸引人数希望最多)进行探讨. 广告费需要取不同数值,一次次 ...

  2. 模式识别 - 处理多演示样例学习(MIL)特征(matlab)

    处理多演示样例学习(MIL)特征(matlab) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27206325 多演示样例学习( ...

  3. 线性规划和整数规划求解(lingo\matlab)

    注意点 1.Lingo 默认所有变量不为负数,故应先进行定义域自由化. 2.Lingo 只有三种关系运算符:"=".">="以及"<=&q ...

  4. 《MATLAB图像处理375例》——1.8 MATLAB程序流程控制结构

    本节书摘来自异步社区<MATLAB图像处理375例>一书中的第1章,第1.8节,作者:MATLAB技术联盟著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.8 ...

  5. lingo与matlab用哪个?matlab能代替lingo吗?非线性规划求解器Lingo,Matlab使用心得

    对于非线性规划,Cplex 与Gurobi只支持二次规划(包括凸规划,二阶锥规划,目标函数或约束条件中可以包含二次函数).若更高次数,或者非凸规划,非二阶锥规划,则需要用其他求解器了.matlab 自 ...

  6. 投资组合管理matlab,《投资组合管理》投资-教材-组合分析.pdf

    新世纪高校证券期货专业系列教材 上海财经大学证券期货学院组编 投资组合管理 曹志广 韩其恒 编著 上海财经大学出版社 C I P 图书在版编目( )数据 / . - 投资组合管理 曹志广,韩其恒编著 ...

  7. matlab电机算法仿真,MATLAB电机仿真精华50例源代码

    [实例简介] MATLAB电机仿真精华50例源代码,包括同步电机,异步电机的仿真模型,和闭环控制等 [实例截图] [核心代码] <MATLAB电机仿真精华50例>源代码 └── <M ...

  8. 数学模型用matlab表示,数学模型的MATLAB描述.ppt

    <数学模型的MATLAB描述.ppt>由会员分享,可在线阅读,更多相关<数学模型的MATLAB描述.ppt(45页珍藏版)>请在人人文库网上搜索. 1.MATLAB语言与控制系 ...

  9. matlab在矿物加工中的应用,试述《矿物加工数学模型》在矿物加工中的作用

    矿物加工作为矿产资源生产过程中重要的生产环节,在国民经济发展中有着重要作用.传统矿物加工很多都依靠工程师的经验来解决设计和生产过程中的问题,往往容易走弯路,造成不必要投入.在工业技术领域使用数学模型研 ...

最新文章

  1. python 信息检索,python信息检索代码_信息检索_倒排记录表合并算法实现(python)...
  2. java awt显示到组件中出现乱码
  3. Spring中注解大全
  4. hfss螺旋平面_利用HFSS设计平面等角螺旋天线
  5. 【操作系统】系统调用
  6. synchronized 修饰static方法
  7. dtree 后台管理例子_产品的后台设计整理与总结
  8. 计算机链接投影仪后不显示桌面,win10系统连接投影后不显示桌面图标怎么办
  9. PDF编辑方法,怎么从PDF中提取页面
  10. html自动调音量,HTML5 音量调节控件
  11. 红豆薏米的祛湿效果到底好不好?
  12. 【一起DIY】吞币机器人
  13. 协作通信-af df的matlab仿真,协作通信三种协作方式(AF+DF+CC)的matlab仿真程序
  14. Christmas Gift圣诞创意衬线字体 for mac
  15. 【进阶篇】全流程学习《20天掌握Pytorch实战》纪实 | Day03 | 文本数据建模流程范例
  16. idea插件之——在markdown复制粘贴图片
  17. 程序员花式吐槽:月入过万累成狗,还不如富士康技术员!
  18. pxe自动化部署Linux系统
  19. 宝,别踩我蜜罐了,可好?
  20. COOX培训材料 — PMT(4.Procedure)

热门文章

  1. python服务端设置心跳处理_Heartrate:看见 Python 程序运行的“心跳”
  2. scrapy链接mysql_Scrapy存入MySQL(四):scrapy item pipeline组件实现细节
  3. 寒门再难出贵子(很现实,很残酷,慎入)
  4. 用HTML编写一首诗
  5. 埃斯顿机器人 王杰高_卓越工程师讲坛——南京埃斯顿机器人工程有限公司总经理王杰高博士做客我校新年首期卓越工程师讲坛...
  6. 百度霸屏引流推广需要多少钱?那么才能霸屏?百度霸屏有什么好处?
  7. 苹果Mac系统历年名称和版本号
  8. Win10如何运行经典200M游戏CS反恐精英(附安装包)
  9. 实现客户机(Client)类声明字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户机数量;定义静态函数成员ChangeServerName
  10. python manage.py runserver报错