数学模型4.8例1投资组合lingo,matlab
生活随笔
收集整理的這篇文章主要介紹了
数学模型4.8例1投资组合lingo,matlab
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天學(xué)到數(shù)學(xué)模型P131 4.8節(jié) 例1 投資組合,這仍然是一個(gè)非線性規(guī)劃問題,里面主要涉及兩個(gè)式子。
其中第二個(gè)寫起來比較復(fù)雜,在lingo中分步計(jì)算出期望,協(xié)方差后,比較好寫。
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負(fù)數(shù)也可以; @for(link(i,j):R(i,j)=A(i,j)-1);!計(jì)算年收益率; @for(stock(i):mean(i)=@sum(year(j):R(i,j))/@size(year));!計(jì)算各股票年收益率均值(期望); @for(matrix(i,j):cov(i,j)=@sum(year(k):(R(i,k)-mean(i))*(R(j,k)-mean(j)))/(@size(year)-1));!計(jì)算協(xié)方差矩陣; 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;!股票權(quán)重;end結(jié)果跑出來和書上一致:
?再用matlab用fmincon函數(shù)(解非線性規(guī)劃)做一遍,先寫目標(biāo)函數(shù),取名為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); %求均值,每行為一個(gè)樣本 cv=cov(profit'); %cov函數(shù)以每列為一個(gè)樣本 % 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列向量,其他行向量要注意一點(diǎn),需要minfun函數(shù)和外面主程序都寫global cv,才能順利在minfun里調(diào)動cv變量(只寫一個(gè)global cv 會出錯,必須主程序里聲明cv是全局變量,minfun函數(shù)里再次聲明cv是全局變量,才能在minfun里調(diào)用cv)。還有一種方法是在minfun里將cv變量計(jì)算出來。
run出的結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的数学模型4.8例1投资组合lingo,matlab的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lisp型材库_基于Auto LISP
- 下一篇: matlab fgoalattain,M